PS:因为最近的项目需要,要做一个界面,虽然之前学习过也用过PyQt做过界面,但考虑到Python程序运行的效率低及工控机中底层硬件的调用,于是选择了C++ QT来做界面。
网上也找了很多的资料、视频、书籍来学习Qt5,但很多都是基于Qt Creator的程序开发,因为时间紧迫且自己的C++水平也很一般,但我需要快速入门且用于实践。在Windows系统下,个人觉得还是通过Qt designer进行界面绘制,然后在VS中编写信号函数、槽函数,这样做的效率比较高。
本着“用到什么,就学什么”的学习理念,我找到了下面这套视频教程,写这篇的博客初衷是:通过查看每个视频的目录,大概知道视频讲了哪些内容,因为自己不是专门学Qt的,可能在设计一个界面时,就只用到了按钮和文本框,那就去找相对应的视频,而不需要全部都学,省时省力。同时每个视频中列举到的示例和关键点,我也记了下来,用于以后自己需要做界面时,浏览本博文内容就大概知道自己的界面需要学哪些内容,哪些示例对自己有帮助,就去看下面对应的视频即可。
1.在进行Opencv和Qt编程时,若出现报错:诸如无法解析外部命令等,多半是环境没配对。
2.在VS中编译运行Qt界面时,有时候需要调出控制台来查看程序的执行情况。
3.Windows安装qt与VS2019添加QT工具过程
https://blog.csdn.net/ljb9854/article/details/102600931
https://blog.csdn.net/visual_eagle/article/details/106236109
1.Qt项目的环境配置
2.调出控制台
1.将vs中编写好的Qt程序转换为Qt creator的项目
2.若移植了一个别人的程序,可能会加载不了,需要先设置版本,在视频5:00处
3.在已有项目中手动添加一个ui文件,并给它绑定类
1.线程的调用
2.在线程中让窗体显示3s后消失
1.使用线程,将窗口从左上角移动到右下角
1.设置窗口状态为最大化
实例:将最大化、最小化、默认状态、全屏与信号槽绑定在一起
PS:所有的窗口类型去源程序中查看
①示例,建一个无边框的窗体
效果:
②示例:
效果:
③示例:
效果:
效果:
④示例:标题栏只保留关闭按钮
字符串拼接举例:
输出:
格式化字符串:
①字符串拼接
②字符串与整型、浮点型之间的转换
示例:QString字符串的查找
示例:QString字符串的替换
示例:QString字符串的切割
原因:因为QTCreator中本身就是utf-8的编码格式,再使用QStringLiteral的话,就会出错。
Qt中文乱码问题在vs项目中显示中文除了041中的方法外,还可以在程序中加入:
也可以解决中文乱码问题。
具体的操作看视频,在QT设计师中通过QLabel显示图片,关于图片的缩放等等。
示例:使用linkActivated()和linkHovered(),配合槽函数,鼠标放在Label上面产生一个事件,鼠标点击产生一个事件,具体的看视频。
示例:QPushButton按键的click()、click(bool)、pressed()、released()事件
示例:讲了QPushButton中设置背景色、字体及颜色、设置背景图片、PushButton的flat属性。
示例:
1.设置背景色、字体及颜色,和QLabel一样,选中按钮,右击选择改变样式表,里面可以设置按钮的背景(添加资源)、渐变色(添加渐变)、字体的颜色(添加颜色)、字体的大小样式(添加字体)。
2.设置圆角边框
3.设置按钮的渐变效果
样式自己编辑
示例:鼠标没有移动到按钮上时,按钮是一种形态,鼠标移动到按钮上时,按钮是另一种形态。
示例:指定输入QLineEdit中的文本形式,如IP地址、字母等等。
示例:对于QLineEdit中的内容,规定其输入的字符类型,输入的数据范围,精度,使不使用科学计数法等等。
示例:使用正则表达式规定QLineEdit中的内容是邮箱的格式,若输入不正确时,会提示报错,同时也会保存正确的输入邮箱。
示例:对于QLineEdit信号的一系列操作。
示例:设置QLineEdit的样式:边框的样式、输入字符为密码的格式、圆角等等,都和QLabel设置的一样,都在Qt设计师中完成,不需要在VS中编写代码。
示例:假设在一个模板中创建了几个对象,如下所示,可以通过遍历的方式,得到这些对象的名称,
若在模板中还嵌套一个模板,可以通过如下方式进行遍历:
示例:
1.递归遍历QObject所有子节点
输出:
2.对于大型项目,很多的控件,可以通过递归获取控件的类型,并通过强转换改变原控件的类型
示例:手动创建代码完成如下界面的制作,通过输入Name、Age、Email,这时候之前讲到的遍历QObject所有子节点并获取控件类型做转换就派上用场了,可以遍历Name、Age、Email中输入的内容,或进行保存Save,或进行清除Clear。
当然也可以通过在QT设计师中完成界面的制作,槽函数信号函数等等可以在VS中编写代码,这样比较省事。