大多数程序员编写的第一个程序都是“HelloWorld”程序,接下来就用Qt Creator编写一个“HelloWorld”程序。
1. 新建一个Qt项目
Qt可以创建多种项目,选择“Application”,中间列表框列出的各类应用程序如下:
- Qt Widgets Application:支持桌面平台的有图形界面的应用程序,GUI界面完全基于C++语言,采用Qt提供的一套C++类库;
- Qt Console Application:控制台应用程序,无图形界面;
- Qt Quick Application:创建一个Qt Quick应用程序。Qt Quick是Qt支持的一套GUI开发架构,界面设计采用QML语言,程序架构使用C++语言。利用Qt Quick可以设计非常炫的用户界面,一般用于移动设备或嵌入式设备上无边框应用程序的设计。 设置好目录之后,会出现选择编译工具的界面,可以将所有编译工具都选中,在编译项目时在选择其中一个使用,这样可以生成不同版本的可执行程序。
再下一步是项目文件的具体设置,其中基类选择有三种,分别如下:
- QMianWindow是主窗口类,具有菜单栏、工具栏和状态栏;
- QWidget是所有可视界面类的基类,选择QWidget创建的界面对各种界面组件都可以支持。QWidget组件可以嵌入在窗口中,同一窗口中可嵌入多个QWidget组件,若一个QWidget组件没有父类,那这个QWidget会变成一个窗口;
- QDialog是对话框类,用于创建各种对话框。
注:勾选“创建界面”选项,就会由Qt Creator创建用户界面(UI)文件,然后使用Designer可视化编辑界面,Qt还可以使用代码创建界面,实际应用中两种方式都会使用,Designer使用较多。
2. 项目的文件组成和管理
如图所示,主要有项目文件树结构和代码编辑区,项目名加粗表示是当前活动项目。
2.1 samp1_1.pro
项目管理文件,包括对项目的设置项,以下代码表示添加core gui模块到项目中来,以后会用到更多模块,如数据库模块(sql),网络通信模块(network)。
QT += core gui
2.2 Headers
头文件(.h)分组,包括项目的所有的头文件,当前项目只有一个主窗口头文件mainwindow.h,内容如下,其中有一个私有指针ui,指向可视化界面,要访问界面文件中的组件都要通过这个指针。
#ifndef MAINWINDOW_H
#define MAINWINDOW_H
#include <QMainWindow>
namespace Ui {
class MainWindow;
}
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
explicit MainWindow(QWidget *parent = nullptr);
~MainWindow();
private:
Ui::MainWindow *ui; // 通过此指针访问界面文件中的组件
};
#endif // MAINWINDOW_H
2.3 Sources
源文件分组(.cpp),包括项目的所有源文件,当前项目有两个源文件
- 程序入口文件main.cpp;
#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
QApplication a(argc, argv); // 定义并创建应用程序
MainWindow w; // 定义并创建窗口
w.show(); // 显示窗口
return a.exec(); // 应用程序运行
}
- 主窗口源文件mainwindow.cpp
#include "mainwindow.h"
#include "ui_mainwindow.h" // Qt编译生成的与mainwindow.ui对应的类定义文件,
// setupUi函数就在这里定义
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this); // 实现窗口的生成与各种属性的设置,信号和槽的关联
}
MainWindow::~MainWindow()
{
delete ui;
}
2.3 Forms
界面文件(.ui)分组,包括项目的所有界面文件,界面文件是使用XML语言描述的文本语言。除了有组件面板、待设计的窗体、属性编辑器、对象浏览器等,还有信号槽编辑器,如图所示,给“close”按钮的单击信号关联了一个MainWindow的槽函数close(),单击按钮后主窗口会关闭。
3. 项目的编译、调试和运行
在“项目”模式下,可以选择不同的编译器编译和运行项目,选择“Build”设置,勾选“Shadow build”复选框,则会在项目同级目录下生成编译后的文件目录,一般用于使用不同编译器创建不同版本的可执行文件;不勾选此项,则会在项目的目录下建立“Debug”和“Release”子目录用于存放编译后的文件。
运行结果如图,单击按钮后主窗口关闭:
注:除非特殊说明,以后本系列文章中的程序均使用MinGW编译器编译。