目录
1.QT的安装
2.创建第一个QT程序
(1)QT代码(C++)
(2)使用qmake工具生成工程文件
①确保qmake是可用的
②如果不能找到qmake,则以下方式参考
③使用qmake生成工程文件
④生成Makefile文件
⑤编译运行
3.QT程序的基本结构
(1)头文件部分
(2)main函数部分
(3)对象部分
(4)显示窗口
(5)将控制权转交给QT
Linux下编写C使用的GDB调试器
Ubuntu中关于C介绍以及编写C程序
Ubuntu换源教程
Linux中的Make工程管理
Linux中关于使用make管理工具的实例
Linux下的Makefile规则(隐式规则和模式规则)
1.QT的安装
Linux下安装QT
Ubuntu下安装Qt5.13 +终端命令启动
2.创建第一个QT程序
(1)QT代码(C++)
新建.cpp文件:sudo touch demo.cpp
编辑demo.cpp文件:sudo gedit demo.cpp
#include<qapplication.h>
#include<qlabel.h>int main(int argc,char*argv[]){QApplication app(argc,argv);QLabel*label=new QLabel("The world is beautiful!",0);label->show();return app.exec();
}
(2)使用qmake工具生成工程文件
①确保qmake是可用的
输入:qmake -v
如果报下面的错,则继续从②的提示操作:
qmake:could not exec '/usr/lib/x86_64-linux-gnu/...:no such file or directory
②如果不能找到qmake,则以下方式参考
第一步:从之前下载的QT文件位置找到qmake:
比如我的路径:/home/用户名/Documents/QT/5.12.9/gcc_64/bin
第二步:sudo gedit /usr/lib/x86_64-linux-gnu/qt-default/qtchooser/default.conf
提示:将打开的配置文件中添加qmake的路径。
③使用qmake生成工程文件
qmake -project
④生成Makefile文件
⑤编译运行
这一步可能会报错
解决方案:
# 查找 libGL 所在位置
locate libGL
输入:sudo ln -s /usr/lib/x86_64-linux-gnu/libGLU.so.1 /usr/lib/libGL.so
还能报一个关于QT版本的错误:
此错误是由于从Qt版本5开始,所有native GUI功能都已从core模块移至单独的模块,即
widgets
模块。应该向qmake声明应用程序依赖于该模块。参考博文:Qt5.x解决报错main.cpp:1:10: fatal error: QApplication: No such file or directory问题
现在应该没有什么错误了:
sudo ./QTWorkSpace
3.QT程序的基本结构
(1)头文件部分
- #include<qapplication.h>:该头文件包含了QApplication类的定义,在每一个使用QT的应用程序中都必须使用的QApplication对象,其中QApplication管理了各种各样的应用程序的广泛资源,如默认的字体和光标。
- #include<qlabel.h>:包含了Qlabel类的定义,也就是在使用的过程中根据实际的需要使用哪个类的定义。其中ALbel主要用来显示一个文本。
(2)main函数部分
int main(int argc,char*argv[]){
}
提示:main函数是程序的入口,main函数只需要在把控制转交给QT库之前执行一些初始化,然后QT库通过事件来向程序告知用户的行为。
其中
- argc:表示命令行的变量数量;
- argv:表示命令行变量的数组。
(3)对象部分
QApplication app(argc,argv);
QLabel*label=new QLabel("The world is beautiful!",0);其中app表示这个程序的QApplication,被创建并处理这些命令行变量。
在QApplication之后的是Alabel被创建,用来显示文本,并且自己本身也是一个窗口,主要是因为在构造函数指定Object为它的父窗口,在这个父窗口中标签被定位。
(4)显示窗口
label->show();(必须通过show来显示窗口)
(5)将控制权转交给QT
return app.exec();
并且当应用程序退出的时候exec就会返回。
在exec当中,QT接收并处理用户和系统的事件并且把它们传递给适当的窗口部件。