Qt系列文章之(八)QApplication

  • Post author:
  • Post category:其他


前期的文章介绍了一些关于Qt非界面类QObject的知识,Qt非界面类还有很多常用模块类,我们将在后面使用到的时候依次介绍给读者。从这篇文章开始将依次介绍一些Qt界面类的使用,本文将从构建Qt界面环境开始。



界面应用环境构建(QApplication)

任何一个Qt项目,特别是界面项目,如果要使用Qt的信号与槽、多线程、事件驱动等机制。都需要包含且只能包含一个应用(Application)对象。Application负责初始化项目需要的资源、监听外部交互信息、项目结束时清除项目所占有的资源等。 Qt一共提供了三个Application:

Application 应用 Qt帮助描述
QCoreApplication 为非界面类项目提供一个事件监听循环。 The QCoreApplication class provides an event loop for Qt applications without UI.
QGuiApplication 以QtGui模块基础开发的界面项目需要应用环境。 The QGuiApplication class manages the GUI application’s control flow and main settings.QGuiApplication contains the main event loop, where all events from the window system and other sources are processed and dispatched. It also handles the application’s initialization and finalization, and provides session management. In addition, QGuiApplication handles most of the system-wide and application-wide settings.
QApplication 以QWidget模块基础开发的界面项目需要应用环境。 The QApplication class manages the GUI application’s control flow and main settings.QApplication specializes QGuiApplication with some functionality needed for QWidget-based applications. It handles widget specific initialization, finalization.

可以简单总结为,如果是非界面项目开发,建议使用QCoreApplication;如果是界面类项目开发,建议使用QApplication。

打开Qt Creator,新建一个Widget项目:

在这里插入图片描述

项目会生成一个界面类,命名为mainWindow, 基类选择QMainWindow。

在这里插入图片描述

后面的配置参考前期文档描述,最后会生成一个界面项目。

在这里插入图片描述

编译运行代码,显示第一个没有任何控件的主窗口界面:

在这里插入图片描述

到此,我们已经配置好一个界面项目的开发环境,项目默认为我们构建了应用环境、主窗口界面。后续即可基于此环境进行下一步的开发。

一起看一下生成的文件的一些关键信息:

Pro文件中默认已经包含了core/gui和widgets三个模块包,常用的界面开发基于这三个模块包已经足够。后续需要使用其他模块包,如QtCharts,再手动添加。

在这里插入图片描述

Mainwindow.h/ mainwindow.cpp和mainwindow.ui一起构成主界面类文件。Ui文件是Qt方便用户做界面快速设计的界面配置描述文件,底层是XML格式,经过编译就可生成界面的c++的代码。h文件和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();
}

需要包含一个应用文件,项目默认包含是的是QApplication,在主函数中构造一个应用a, QApplication a(argc, argv)。代码a.exec()表示项目进入底层事件循环监听,如果没有此行代码,界面将快速一闪而过,不会处在悬浮监听状态。

主函数实例化一个主界面w,此步已经将界面的基本元素构造好,在通过调用界面的show()函数将界面显示给用户。

读者可以自己尝试将return a.exec()和w.show()分别注释看看你的项目输出什么响应,将更加有助于你理解二者的含义。

本项目默认会基于QMaindow的子类mainWindow来实例化界面,同时为我们提供了一个便于界面布局设计的ui文件,但这些并不是必须的。对main.cpp做一些修改,不基于mainWindow示例对象,而是直接实例化QMaindow。运行代码,除了界面默认大小有差异外,其他基本都一样。

在这里插入图片描述

本文主要介绍如何基于Qt Creator构建一个界面项目,以及对界面项目中应用环境的配置和认识,后续将陆续介绍界面开发相关的控件布局使用和参数设置等。


欢迎同好沟通交流,批评指正,欢迎关注我的公号:不如起而行之



版权声明:本文为llittlestar123原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。