Qt简介
跨平台的C++图形用户界面应用程序框架,为应用程序开发者提供建立艺术级图形界面所需的所有功能。且完全面向对象,容易扩展,允许真正的组件编程。
下载地址:Index of /archive/qt
安装教程:(6条消息) QT5.11下载与安装教程_灬杨三岁灬的博客_qt安装教程
Qt的优点
- 跨平台,几乎支持所有的平台
- 接口简单,容易上手,学习QT框架对学习其他框架有参考意义。
- 一定程度上简化了内存回收机制
- 开发效率高,能够快速的构建应用程序。
- 有很好的社区氛围,市场份额在缓慢上升。
- 可以进行嵌入式开发。
成功案例:
- Linux桌面环境KDE
- WPS Office 办公软件
- Skype 网络电话
- Google Earth 谷歌地图
- VLC多媒体播放器
- VirtualBox虚拟机软件
Qt基本属性
.pro文件
.pro就是工程文件(project),它是qmake自动生成的用于生产makefile的配置文件。在使用Qt向导生成的应用程序.pro文件格式如下:
.pro文件的写法如下:
注释
从“#”开始,到这一行结束。
模板类型TEMPLATE
TEMPLATE
- app :建立一个应用程序的makefile。这是默认值,所以如果模板没有被指定,这个将被使用。
- lib : 建立一个库的makefile。
- vcapp :建立一个应用程序的VisualStudio项目文件。
- vclib :建立一个库的VisualStudio项目文件。
- subdirs :这是一个特殊的模板,它可以创建一个能够进入特定目录并且为一个项目文件生成makefile并且为它调用make的makefile。
应用程序名TARGET
指定生成的应用程序名;例如:TARGET = chenyaoyao,即生成的.exe程序名称如下所示:
头文件HEADERS
HEADERS
FORMS
指的是工程中包含的ui设计文件,FORMS += thefirsthomework.ui;如下所示:
源文件
如下所示:
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
这条语句的含义是,如果QT_MAJOR_VERSION大于4(大于Qt4版本,即当前使用Qt5版本及更高版本),需要增加widgets模块。如果项目仅需支持Qt5,也可以直接添加“QT += widgets”一句。不过为了保持代码兼容,最好还是按照QtCreator生成的语句编写。
配置信息CONFIG
CONFIG用来告诉qmake关于应用程序的配置信息:
CONFIG += c++11 //使用c++11的特性
这里使用“+=”,是因为添加我们自己的配置选项到任何一个已经存在中。这样做比使用“=”那样替换已经指定的所有选项更安全。
main()函数
#include "thefirsthomework.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
TheFirstHomework w;
w.show();
return a.exec();
}
解释:
- Qt系统提供的标准类名声明头文件没有.h后缀;
- Qt一个类对应一个头文件,类名就是头文件名;
- QApplication应用程序类;
- 管理图形用户界面应用程序的控制流和主要设置。
- 是Qt的整个后台管理的命脉,它包含主事件循环,在其中来自窗口系统和其它资源的所有事件处理和调度。它也处理应用程序的初始化和结束,并且提供对话管理。
- 对于任何一个使用Qt的图形用户界面应用程序,都正好存在一个QApplication 对象,而不论这个应用程序在同一时间内是不是有0、1、2或更多个窗口。
- a.exec() :程序进入消息循环,等待对用户输入进行响应。这里main()把控制权转交给Qt,Qt完成事件处理工作,当应用程序退出的时候exec()的值就会返回。在exec()中,Qt接受并处理用户和系统的事件并且把它们传递给适当的窗口部件。
坐标系
原点位于左上角、y正方向向下、x正方向向右 。嵌套窗口(图中open或close窗口)坐标相对于父类窗口(第一次作业窗口)建立 ,如下所示:
QWidget*openleft=new QWidget;//父类窗口
QPushButton*Left=new QPushButton(this);//子类窗口,并设置父级窗口为this
QPushButton*Right=new QPushButton(this);//子类窗口,并设置父级窗口为this
resize(500,500);//设置父类窗口大小
setWindowTitle("第一次作业");//设置窗口名称
openleft->setWindowTitle("temporary window");//设置新窗口名称
Left->move(100,200);//移动窗口到x=100,y=200处
Right->move(300,200);//移动窗口到x=300,y=200处
Left->setText("open");//设置按钮内显示文本
Right->setText("close");//设置按钮内显示文本
类关系
三个基类:QMainWindow、QWidget、QDialog,其中 QMainWindow、QDialog继承自QWidget