Qt入门系列教程------01

1,511 阅读3分钟

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 +=

逐行解释:

  1. QT += core gui:需要引用工程的模块,core表示核心模块,gui表示界面模块。Qt的代码都是模块化方式组织的,如果你想引入某方面的功能,就需要将对应模块引入到你的工程中。
  2. greaterThan(QT_MAJOR_VERSION,4): QT += widgets:这是Qt5为了兼容Qt4而专门设计的,语句大意为如果Qt版本大于4,则将widgets模块加入到QT变量中,从这一点,我们可以推敲出Qt4的widgets模块是和gui模块为一体的,而Qt5已经将其分离了出来。
  3. TARGET = demo_01:应用程序名,生成的.exe程序名称。
  4. TEMPLATE=app:工程所使用的模版。app表示是一个窗口应用程序。如果是lib则表明是一个动态库模版。
  5. DEFINES+=QT_DEPRECATED_WARNINGS:定义编译选项。QT_DEPRECATED_WARNINGS表示当Qt的某些功能被标记为过时的,那么编译器会发出警告。
  6. SOURCES += \main.cpp:源文件,“\”号可以分行书写,但仍为一行。
  7. 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. 第1行和第2行包含了类QApplication和Qlabel的定义,对于每个Qt类,都有一个与该类同名(且大写)的头文件,在这个头文件中包含了对该类的定义。
  2. 第3行就是C++中常见的main()函数,它有两个参数,用来接收命令行参数。
  3. 第5行新建了QApplication对象,用于管理应用程序的资源,任何一个Qt Widget是程序都要有一个QApplication对象。因为Qt程序可以接收命令行参数,所以它需要argc和argv两个形参。
  4. 第6行新建一个QLabel的对象label,参数QString可以用tr()函数的参数返回。
  5. 第7行设置了该label处于窗口中心位置。
  6. 第8、9、10行设置了label里面内容的字体是16号字体。
  7. 第11、12、13行设置了label里面内容的字体颜色是红色。
  8. 第14、15、16行分别设置了label控件的大小(这里只有一个控件也就是窗体的大小)以及生成应用程序偏移窗口的位置并将其show()函数显示出来。
  9. 第17行让QApplication对象进入事件循环,这样Qt应用程序运行时便可以接收产生的事件。

3.运行效果如下:

01.png

最后,欢迎大家留言交流学习,谢谢!!