ToB企服应用市场:ToB评测及商务社交产业平台
标题:
Windows图形界面(GUI)-QT-C/C++ - QT框架剖析
[打印本页]
作者:
老婆出轨
时间:
5 天前
标题:
Windows图形界面(GUI)-QT-C/C++ - QT框架剖析
公开视频 -> 链接点击跳转公开课程
博客首页 -> 链接点击跳转博客主页
目次
工程配置
代码视图
配置文件
核心代码
工程配置
New Project
QT Widgets Application
涉及到名称输入不要存在中文
QMAKE
Weight
可以手动指定修改类文件
选择开发情况
代码视图
配置文件
# 添加 Qt 模块 core 和 gui
QT += core gui
# 如果 Qt 的主版本号大于 4,添加 widgets 模块
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
# 配置项目使用 C++17 标准
CONFIG += c++17
# 您可以使您的代码在使用弃用的 API 时无法编译。
# 为了做到这一点,取消注释以下行。
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000 # 禁用在 Qt 6.0.0 之前被弃用的所有 API
# 指定项目的源文件列表
SOURCES += \
main.cpp \
widget.cpp
# 指定项目的头文件列表
HEADERS += \
widget.h
# 部署的默认规则。
# 目标路径在 QNX 系统上是 `/tmp/$${TARGET}/bin`
qnx: target.path = /tmp/$${TARGET}/bin
# 目标路径在非 android 的 Unix 系统上是 `/opt/$${TARGET}/bin`
else: unix:!android: target.path = /opt/$${TARGET}/bin
# 如果 target.path 不为空,将其添加到 INSTALLS 变量中
!isEmpty(target.path): INSTALLS += target
复制代码
QT += core gui
:
作用:告诉 qmake 该项目依赖 core 和 gui 模块。
影响:core 模块包含了 Qt 的核心功能,而 gui 模块包含了图形用户界面相关的功能。
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
:
作用:如果 Qt 的主版本号大于 4,则添加 widgets 模块。
影响:widgets 模块包含了用于构建桌面应用程序的窗口小部件类。
CONFIG += c++17
:
作用:配置项目使用 C++17 标准。
影响:使编译器使用 C++17 标准进行编译,启用 C++17 的新特性。
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000
:
作用:这行代码被注释掉了。如果取消注释,它会禁用在 Qt 6.0.0 之前被弃用的所有 API。
影响:如果启用这行,将逼迫编译器在检测到使用弃用的 API 时报错,有助于代码的前瞻性维护。
SOURCES += \ main.cpp \ widget.cpp
:
作用:指定项目标源文件列表。
影响:qmake 将这些文件到场到项目中进行编译。
HEADERS += \ widget.h
:
作用:指定项目标头文件列表。
影响:qmake 将这些头文件包含在项目中。
qnx: target.path = /tmp/$${TARGET}/bin
:
作用:在 QNX 系统上,设置目标路径为 /tmp/$${TARGET}/bin。
影响:定义了在 QNX 系统上摆设时的目标路径。
else: unix:!android: target.path = /opt/$${TARGET}/bin
:
作用:在非 android 的 Unix 系统上,设置目标路径为 /opt/$${TARGET}/bin。
影响:定义了在 Unix 系统(排除 Android)上摆设时的目标路径。
!isEmpty(target.path): INSTALLS += target
:
作用:如果 target.path 不为空,则将其添加到 INSTALLS 变量中。
影响:定义了安装目标路径,使项目可以摆设到指定路径。
核心代码
#ifndef WIDGET_H
#define WIDGET_H
// 包含 QWidget 类的头文件
#include <QWidget>
// 定义一个名为 Widget 的类,继承自 QWidget
class Widget : public QWidget
{
// Q_OBJECT 宏,用于启用 Qt 的元对象系统,包括信号和槽机制
Q_OBJECT
public:
// 构造函数,接受一个 QWidget 类型的指针作为父对象,默认为 nullptr
Widget(QWidget *parent = nullptr);
// 析构函数
~Widget();
};
#endif // WIDGET_H
// 包含 widget.h 头文件,以便实现 Widget 类
#include "widget.h"
// Widget 类的构造函数实现
Widget::Widget(QWidget *parent)
: QWidget(parent) // 调用基类 QWidget 的构造函数,传递父对象
{}
// Widget 类的析构函数实现
Widget::~Widget() {}
// 包含 widget.h 头文件,以便使用 Widget 类
#include "widget.h"
// 包含 QApplication 类的头文件
#include <QApplication>
// 主函数,程序的入口点
int main(int argc, char *argv[])
{
// 创建一个 QApplication 对象,管理应用程序的资源和事件循环
QApplication a(argc, argv);
// 创建一个 Widget 对象,默认没有父对象
Widget w;
// 显示 Widget 窗口
w.show();
// 进入应用程序的主事件循环,直到调用 exit() 函数
return a.exec();
}
复制代码
widget.h 文件
:
使用 #ifndef, #define, #endif 宏防止头文件重复包含。
包含 QWidget 头文件,定义一个继续自 QWidget 的 Widget 类。
使用 Q_OBJECT 宏启用 Qt 的元对象系统。
声明 Widget 类的构造函数和析构函数。
main.cpp 文件
:
包含 widget.h 和 QApplication 头文件。
在 main 函数中创建 QApplication 对象,管理应用程序的资源和事件循环。
创建 Widget 对象并表现它。
调用 QApplication::exec() 进入主事件循环,直到应用程序退出。
widget.cpp 文件
:
包含 widget.h 头文件。
实现 Widget 类的构造函数和析构函数。
构造函数调用基类 QWidget 的构造函数,通报父对象。
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/)
Powered by Discuz! X3.4