从零开始学QT系列——(1) 第一个QT程序

2021/10/28 17:10:05

本文主要是介绍从零开始学QT系列——(1) 第一个QT程序,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

前言

因工作需要用到qt,打算边学边写,主要记录自己的思维理解及一些重要的知识点,文章会参考很多大佬的博客,都会注明。不打算写的很有逻辑和条理,如有朋友看到了请见谅我写的不足的地方,欢迎批准指正!系列均采用了qt5.14.2的版本,mingw的编译器。虽然最新的稳定版是5.15.2,实在懒得卸载重新安装了。另外该系列基本会一直参考豆子大佬的博客:《Qt 学习之路 2》目录 - DevBean Tech World。

qt5.15.2的下载安装可以参考这篇文章:Qt5.15下载和安装教程_QTkaifa的博客-CSDN博客_qt5.15

一.我的第一个qt程序

#include "mainwindow.h"
#include <QApplication>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow myWindow;
    //myWindow.setWindowTitle("hello");
    myWindow.show();
    return a.exec();
}

解释一下:

前两行是 C++ 的 include 语句,这里我们引入的是QApplication以及mainwindow这两个类。main()函数中第一句是创建一个QApplication类的实例。对于 Qt 程序来说,main()函数一般以创建 application 对象(GUI 程序是QApplication,非 GUI 程序是QCoreApplicationQApplication实际上是QCoreApplication的子类。)开始,后面才是实际业务的代码。这个对象(application对象)用于管理 Qt 程序的生命周期,开启事件循环,这一切都是必不可少的。在我们创建了QApplication对象之后,直接创建一个MainWindow对象,最后调用MainWindowshow()函数将其显示出来。main()函数最后,调用app.exec(),开启事件循环。我们现在可以简单地将事件循环理解成一段无限循环。正因为如此,我们在栈上构建了MainWindow对象,却能够一直显示在那里(试想,如果不是无限循环,main()函数立刻会退出MainWindow对象当然也就直接析构了)。

注意:此时直接运行时,如果你没有设置title,窗口的title默认显示的是你的工程名。这个具体的解释我在帮助文档里找到了:

//来自于Qwidget Class
windowTitle : QString
This property holds the window title (caption)
This property only makes sense for top-level widgets, such as windows and dialogs. If no caption has been set, the title is based of the windowFilePath. If neither of these is set, then the title is an empty string.
If you use the windowModified mechanism, the window title must contain a "[*]" placeholder, which indicates where the '*' should appear. Normally, it should appear right after the file name (e.g., "document1.txt[*] - Text Editor"). If the windowModified property is false (the default), the placeholder is simply removed.
On some desktop platforms (including Windows and Unix), the application name (from QGuiApplication::applicationDisplayName) is added at the end of the window title, if set. This is done by the QPA plugin, so it is shown to the user, but isn't part of the windowTitle string.
Access functions:
​
QString 
windowTitle() const
void 
setWindowTitle(const QString &)

二.QMainWindow的继承关系

GUI应用程序都有一个主窗口,虽然前面讲到的QWidget组件也可以定义生成主窗口,但是Qt还定义了一个专门用于实现主窗口的类QMainWindow。为什么?跟QDialog一样的道理,主窗口具有许多主窗口特有的元素组件,为了程序的复用性,Qt在QWidget的基础上“特例化”了一个QMainWindow

GUI程序是由一个主窗口和多个对话框组成,主窗口是与用户进行长时间交互的窗口,是程序启动后显示的第一个窗口,程序的绝大多数功能是直接由主窗口提供,辅助功能由对话框提供。 原文链接:Qt中的主窗口QMainWindow_echo_bright_的博客-CSDN博客

QMainWindow是Qt中主窗口的基类:

这里写图片描述

显然,QMainWindow是一种容器类型的组件。

QMainWindow封装了主窗口常用的菜单栏组件、工具栏组件、中心组件组件、停靠栏组件和状态栏组件。对于程序员来讲对这些概念再熟悉不过了。Qt是面向对象的GUI开发平台,所以上述封装在MainWindow中的组件自然也是以类的形式存在:

1. 菜单栏组件QMenuBar
1.1 下拉菜单项组QMenu
1.2 菜单项QAction

2. 工具栏组件QToolBar
2.1 快捷项QAction

3. 状态栏组件QStatusBar
3.1 任意组件QWidget

出自:Qt中的主窗口QMainWindow_echo_bright_的博客-CSDN博客



这篇关于从零开始学QT系列——(1) 第一个QT程序的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!


扫一扫关注最新编程教程