HelloWorld程序

136 阅读4分钟

大多数程序员编写的第一个程序都是“HelloWorld”程序,接下来就用Qt Creator编写一个“HelloWorld”程序。

1. 新建一个Qt项目

1.2.1.png

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可以设计非常炫的用户界面,一般用于移动设备或嵌入式设备上无边框应用程序的设计。 设置好目录之后,会出现选择编译工具的界面,可以将所有编译工具都选中,在编译项目时在选择其中一个使用,这样可以生成不同版本的可执行程序。

1.2.2.png

再下一步是项目文件的具体设置,其中基类选择有三种,分别如下:

  • QMianWindow是主窗口类,具有菜单栏、工具栏和状态栏;
  • QWidget是所有可视界面类的基类,选择QWidget创建的界面对各种界面组件都可以支持。QWidget组件可以嵌入在窗口中,同一窗口中可嵌入多个QWidget组件,若一个QWidget组件没有父类,那这个QWidget会变成一个窗口;
  • QDialog是对话框类,用于创建各种对话框。

1.2.3.png

注:勾选“创建界面”选项,就会由Qt Creator创建用户界面(UI)文件,然后使用Designer可视化编辑界面,Qt还可以使用代码创建界面,实际应用中两种方式都会使用,Designer使用较多。

2. 项目的文件组成和管理

如图所示,主要有项目文件树结构和代码编辑区,项目名加粗表示是当前活动项目。

1.2.4.png

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(),单击按钮后主窗口会关闭。

1.2.5.png

3. 项目的编译、调试和运行

在“项目”模式下,可以选择不同的编译器编译和运行项目,选择“Build”设置,勾选“Shadow build”复选框,则会在项目同级目录下生成编译后的文件目录,一般用于使用不同编译器创建不同版本的可执行文件;不勾选此项,则会在项目的目录下建立“Debug”和“Release”子目录用于存放编译后的文件。

1.2.6.png

运行结果如图,单击按钮后主窗口关闭:

1.2.7.png

注:除非特殊说明,以后本系列文章中的程序均使用MinGW编译器编译。