QT学习——1.下载QT及创建一个简单工程
一、什么是QT
QT是一款跨平台的C++图形用户界面应用程序开发框架,可用于开发桌面应用程序、移动应用程序、嵌入式系统等。这里我们主要用来应用于嵌入式系统,可以理解为用QT制作嵌入式“前端”。
QT提供了一整套现成的工具和库,使得开发人员能够更加高效地创建出精美和易于操作的界面,而不必在不同的平台上重复劳动。当然我们也要掌握基本的C/C++语法,这能帮助我们更好理解QT的代码逻辑。
二、下载QT
我下载的是5.11.1版本,较为稳定,进到5.11.1/文件夹中发现有很多个下载文件,如果Win系统的用户下载文件后缀名为exe的文件即刻,macOS用户下载mac版本,若需要应用在Linux系统的就选择linux版本。我这里暂时只用在win系统,所以只下载Win版本,包括后面的文章也都是基于Win版本的操作界面进行记录。
安装过程与其他软件相似,这里不做过多赘述,一路选accept和next即可。
需要注意的是:
- QT的安装需要邮箱认证进行账号注册,根据提示完成即可;
- 在选择安装路径的时候,路径里面不能包括中文;
- 在选择所需安装库和工具时,可勾选QT中的MinGW 5.2.0 32bit(Win系统专属)、Android x86、Android ARMx7(这两个Android可以用于开发手机APP,可以理解为手机模拟器)、QT Virtual Keyboard、QT Script (Deprecated);Tools中的Qtcreator 4.6.2 CDB Debug、MinGW 5.3.0。
- 以上没有提到的均选默认即可。
三、创建一个QT工程(搭建页面)
1.打开QT Creator->New Project->默认选项就是我们要创建的工程类型了(如下图所示)
2.同样,工程保存的路径里面不能有中文->Kits中的内容默认设置即可->Details页面中,基类选择QWidget->其他默认即可,点击完成则自动创建工程
3.我们可以看到创建好的工程里面已经有许多文件,点击Forms->widget.ui即可进入图像可视化编程界面,在这里我们来设计项目界面。
4.将左边一栏的控件拖拽至中间的界面,即可完成放置,以下为一个登陆界面的基本控件,大家可以根据需要自行添加控件。
5.点击某一控件,右下角那一栏就是该控件的属性,可以在那里调整控件的大小、字体大小、输入/输出属性。这里列出目前用的几个:调整字体大小、将LineEdit输入控件输入的内容设置为密文的形式。点击画布空白处,也可以在右边的属性栏调整画布的大小。
6.点击调试按钮(左下角一个绿色的三角形),即可进行运行,或者按Ctrl+R运行调试。
tips:因为电脑分辨率不同,运行时如果发现控件被挤压,画面不完整,可以在main.cpp文件中的main函数里面添加这一行:
QCoreApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
再回到图形编程界面点击运行就可以正常显示啦!
四、创建一个QT工程(信号和槽)
搭建好的页面对于按键、输入是没有反应的,这时候需要我们设置信号和槽,来实现相应的数据应用和跳转等操作。
1.给控件重命名。给控件起一个简单通俗易懂的名字,可以方便我们记忆以及操作。在右上角对象中,双击相应控件名进行修改。被选中的控件也会在界面设计栏中亮起。
目前只对账号输入控件、密码输入控件、登录按钮、注册按钮四个控件进行重命名。
2.信号和槽
①信号:每个控件都能发出特定的信号
在左边的“帮助”中,将“目录”修改为“索引”,然后查找pushButton。
在QPushButton Class中可以看到,Inherits的是当前控件的父类(C++继承的说法)、Inherite By的是当前控件的儿子。
我们点击QAbstractButton,就可以进入到父类,寻找到Signal,里面就是PushButton从父类继承过来的信号函数,我们常用的就是第一个void clicked(booll checked=false),显而易见这个信号的作用,这里就不做过多赘述了。
②槽:槽函数,把槽函数绑定在某一个空间的信号上,当信号给出则执行槽函数
③关联信号和槽:
a.自动关联:在UI文件里面自动关联,选中控件,右键选择“转到槽”,这里我们选择第一个函数clicked()。
点击“ok”之后,在编辑那里看到的.cpp文件就自动给我们加上了一个槽函数,并且在.h文件中给我们声明好了槽函数。这里的声明只能声明在private slots或者public slots下面。
如何判断自己关联成功?
可以在槽函数内写入Debug,如下代码:
void Widget::on_registerBt_clicked() { qDebug("success!"); }
这里使用的qDebug不需要包含头文件,其他的写法可能需要包含头文件,可以在文件开头include进去。具体qDebug的使用可以参考这篇文章: http://t.csdn.cn/UOcvY
#include <QDebug>
运行看到有对应输出即为关联成功。
b.手动关联
手动关联并不是将自动关联生产的一系列代码敲进文件,而是在widget.cpp使中用到connect函数。
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
connect(ui->logBt,SIGNAL(clicked()),this,SLOT(logBt_clicked_slot()));
//ui->logBt(登录按钮)、SIGNAL(信号,选择clicked)、SLOT(表示关联到槽函数)
}
void Widget::logBt_clicked_slot()
{
qDebug("log on successed!");
}
在widget.h文件中声明槽函数。
private slots:
void on_registerBt_clicked();
void logBt_clicked_slot();//手动关联添加声明
这样就可以实现与自动关联相同的效果啦!
关于connect函数,我们可以这样理解,详细的解释可以在帮助里面搜索connct进行查看。
connect(A,SIGNAL(B),C,SLOT(D)); 当对象A发出B信号时,就会触发对象C的槽函数D
第一次写文章,在准备秋招笔试面试的时候发现自己有很多不会的东西,例如操作系统、QT、RTOS等,打算边学边记录,给自己一个动力,也是一个回顾的资料。关于QT的学习我看的是b站北京迅为科技的,讲得很好很细致,从项目中学习QT也很高效,很实用。在学习过程中遇到的一些问题以及解决的方法可能是视频里面没有的,包括一些其他的相关知识我也会查找资料后写在这里。希望有帮助!
FUJ1M0T0: 感谢作者大大,大一新生靠看您文章做了课设
没想好叫什么94: 芜湖,有帮助就好!!
qq_58460834: 感谢,新手收获帮助
CSDN-Ada助手: 恭喜您写了第5篇博客!标题看起来非常吸引人,网络编程(TCP)是一个非常有趣的主题。您在这个系列的学习中一直保持着坚持和创作的热情,真是令人钦佩!在网络编程方面的知识,我相信您已经有了很好的掌握。 接下来,我建议您可以考虑在博客中分享一些实际应用案例,比如如何使用QT进行网络通信等。这样可以帮助读者更好地理解并运用所学知识。同时,您也可以考虑扩大博客的范围,涉及更多网络编程的相关内容,比如UDP协议等。这样可以进一步丰富您的博客内容。 再次恭喜您的持续创作,期待您的下一篇博客!祝您越来越好!
CSDN-Ada助手: 恭喜您写了第6篇博客!标题为“QT学习——6.网络编程(UDP)”。网络编程是一个非常有用和有挑战性的主题,而您的文章给出了很好的解释和指导。在这篇博客中,您对UDP协议进行了深入的探索,这对于想要学习网络编程的读者来说是非常有价值的。 我真的很欣赏您对技术的热情和持续创作的精神。您的博客不仅帮助了自己巩固知识,也为其他人提供了学习的机会。对于像我这样的读者来说,这是一份难得的宝藏。 作为下一步的创作建议,我希望能看到更多关于网络编程的主题,比如TCP协议、Socket编程等。在您的博客中,您可以继续深入研究和分享一些实际案例,通过解决实际问题来帮助读者更好地理解和应用这些知识。 再次祝贺您的成功,并期待看到更多精彩的博文!谢谢您的付出和分享!