Qt入门系列教程
- 概述:本文所有程序都是基于Qt5.9.0编写的,用的是Qt自带的Qt Creator编译器,移植程序时需要注意版本,有问题的可以留言交流,本作者原意帮助大家解决各种版本Qt程序移植的问题,欢迎大家多对留言交流,共同进步。
1.Hello Qt
新建一个空的工程,然后往工程里面添加main.cpp文件,首先,我们从一个简单的Qt程序开始,一行一行的研究代码,其中.pro文件如下:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = demo_01
TEMPLATE = app
DEFINES += QT_DEPRECATED_WARNINGS
SOURCES += \
main.cpp
HEADERS +=
逐行解释:
- QT += core gui:需要引用工程的模块,core表示核心模块,gui表示界面模块。Qt的代码都是模块化方式组织的,如果你想引入某方面的功能,就需要将对应模块引入到你的工程中。
- greaterThan(QT_MAJOR_VERSION,4): QT += widgets:这是Qt5为了兼容Qt4而专门设计的,语句大意为如果Qt版本大于4,则将widgets模块加入到QT变量中,从这一点,我们可以推敲出Qt4的widgets模块是和gui模块为一体的,而Qt5已经将其分离了出来。
- TARGET = demo_01:应用程序名,生成的.exe程序名称。
- TEMPLATE=app:工程所使用的模版。app表示是一个窗口应用程序。如果是lib则表明是一个动态库模版。
- DEFINES+=QT_DEPRECATED_WARNINGS:定义编译选项。QT_DEPRECATED_WARNINGS表示当Qt的某些功能被标记为过时的,那么编译器会发出警告。
- SOURCES += \main.cpp:源文件,“\”号可以分行书写,但仍为一行。
- HEADERS +=:头文件,这里暂时没有头文件。
2.main.cpp文件如下:
1 #include <QApplication>
2 #include <QLabel>
3 int main(int argc, char *argv[])
4 {
5 QApplication a(argc, argv);
6 QLabel *label = new QLabel(QObject::tr("Hello Qt! 学习使我快乐!"));
7 label->setAlignment(Qt::AlignCenter);
8 QFont ft;
9 ft.setPointSize(16);
10 label->setFont(ft);
11 QPalette pa;
12 pa.setColor(QPalette::WindowText,Qt::red);
13 label->setPalette(pa);
14 label->resize(500,400);
15 label->move(100,50);
16 label->show();
17 return a.exec();
18 }
逐行解释:
- 第1行和第2行包含了类QApplication和Qlabel的定义,对于每个Qt类,都有一个与该类同名(且大写)的头文件,在这个头文件中包含了对该类的定义。
- 第3行就是C++中常见的main()函数,它有两个参数,用来接收命令行参数。
- 第5行新建了QApplication对象,用于管理应用程序的资源,任何一个Qt Widget是程序都要有一个QApplication对象。因为Qt程序可以接收命令行参数,所以它需要argc和argv两个形参。
- 第6行新建一个QLabel的对象label,参数QString可以用tr()函数的参数返回。
- 第7行设置了该label处于窗口中心位置。
- 第8、9、10行设置了label里面内容的字体是16号字体。
- 第11、12、13行设置了label里面内容的字体颜色是红色。
- 第14、15、16行分别设置了label控件的大小(这里只有一个控件也就是窗体的大小)以及生成应用程序偏移窗口的位置并将其show()函数显示出来。
- 第17行让QApplication对象进入事件循环,这样Qt应用程序运行时便可以接收产生的事件。
3.运行效果如下:
最后,欢迎大家留言交流学习,谢谢!!