- 公开视频 -> 链接点击跳转公开课程
- 博客首页 -> 链接点击跳转博客主页
目录
工程配置
-
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
的构造函数,传递父对象。
-
-