Qt6基础篇(七)——运行窗口程序
前言:
这篇程序为通过CMake编译并运行的第一个Qt6程序。
1 工程代码
前面介绍了通过Qt Creatore创建的Demo、CMakeLists.txt和UI文件的方法,工程如下。
main.cpp内容如下。
1 2 3 4 5 6 7 8 9 10 11 12
| #include <QApplication> #include "mainwindow.h"
int main(int argc, char *argv[]) { QApplication app(argc, argv);
MainWindow w; w.show();
return app.exec(); }
|
mainwindow 是我们通过Qt Creatore创建的UI,并手动编写的一对.h和.cpp文件,其为主窗UI。 MainWindow w
定义了主窗类的对象,并调用 w.show()
将其显示出来。 QApplication
是Qt框架中的核心类,它负责提供了应用程序范围内的功能,它是所有使用Qt进行图形用户界面开发的应用程序的基础。 app.exec()
函数启动了Qt的事件处理机制,使程序能够监听并响应各种事件,比如鼠标点击、键盘输入、窗口重绘等。
mainwindow.h内容如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow: public QMainWindow { Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr); ~MainWindow();
private:
Ui::MainWindow *ui; }; #endif
|
定义了主窗口类 MainWindow
公有继承自基类 QMainWindow
。
mainwindow.cpp内容如下。
1 2 3 4 5 6 7 8 9 10 11
| #include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); }
MainWindow::~MainWindow() { delete ui; }
|
cpp中实现了构造函数和析构函数。
mainwindow.ui内容如下,是一个空的主窗口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>800</width> <height>600</height> </rect> </property> <property name="windowTitle"> <string>MainWindow</string> </property> <widget class="QWidget" name="centralwidget"/> <widget class="QMenuBar" name="menubar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>800</width> <height>22</height> </rect> </property> </widget> <widget class="QStatusBar" name="statusbar"/> </widget> <resources/> <connections/> </ui>
|
CMakeLists.txt内容如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| cmake_minimum_required(VERSION 3.5)
project(litchi VERSION 0.1 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 REQUIRED COMPONENTS Widgets)
qt_add_executable(litchi main.cpp mainwindow.cpp mainwindow.h mainwindow.ui)
target_link_libraries(litchi PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
|
其中 qt_add_executable
指定了所有源文件和ui资源文件。
编译运行后结果如下。
Qt6基础篇(七)——运行窗口程序
前言:
这篇程序为通过CMake编译并运行的第一个Qt6程序。
1 工程代码
前面介绍了通过Qt Creatore创建的Demo、CMakeLists.txt和UI文件的方法,工程如下。
main.cpp内容如下。
1 2 3 4 5 6 7 8 9 10 11 12
| #include <QApplication> #include "mainwindow.h"
int main(int argc, char *argv[]) { QApplication app(argc, argv);
MainWindow w; w.show();
return app.exec(); }
|
mainwindow 是我们通过Qt Creatore创建的UI,并手动编写的一对.h和.cpp文件,其为主窗UI。 MainWindow w
定义了主窗类的对象,并调用 w.show()
将其显示出来。 QApplication
是Qt框架中的核心类,它负责提供了应用程序范围内的功能,它是所有使用Qt进行图形用户界面开发的应用程序的基础。 app.exec()
函数启动了Qt的事件处理机制,使程序能够监听并响应各种事件,比如鼠标点击、键盘输入、窗口重绘等。
mainwindow.h内容如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| #ifndef MAINWINDOW_H #define MAINWINDOW_H
#include <QMainWindow>
QT_BEGIN_NAMESPACE
namespace Ui { class MainWindow; }
QT_END_NAMESPACE
class MainWindow: public QMainWindow { Q_OBJECT
public:
MainWindow(QWidget *parent = nullptr); ~MainWindow();
private:
Ui::MainWindow *ui; }; #endif
|
定义了主窗口类 MainWindow
公有继承自基类 QMainWindow
。
mainwindow.cpp内容如下。
1 2 3 4 5 6 7 8 9 10 11
| #include "mainwindow.h"
MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); }
MainWindow::~MainWindow() { delete ui; }
|
cpp中实现了构造函数和析构函数。
mainwindow.ui内容如下,是一个空的主窗口。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| <?xml version="1.0" encoding="UTF-8"?> <ui version="4.0"> <class>MainWindow</class> <widget class="QMainWindow" name="MainWindow"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>800</width> <height>600</height> </rect> </property> <property name="windowTitle"> <string>MainWindow</string> </property> <widget class="QWidget" name="centralwidget"/> <widget class="QMenuBar" name="menubar"> <property name="geometry"> <rect> <x>0</x> <y>0</y> <width>800</width> <height>22</height> </rect> </property> </widget> <widget class="QStatusBar" name="statusbar"/> </widget> <resources/> <connections/> </ui>
|
CMakeLists.txt内容如下。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| cmake_minimum_required(VERSION 3.5)
project(litchi VERSION 0.1 LANGUAGES CXX)
set(CMAKE_AUTOUIC ON) set(CMAKE_AUTOMOC ON)
set(CMAKE_CXX_STANDARD 11) set(CMAKE_CXX_STANDARD_REQUIRED ON)
find_package(Qt6 REQUIRED COMPONENTS Widgets)
qt_add_executable(litchi main.cpp mainwindow.cpp mainwindow.h mainwindow.ui)
target_link_libraries(litchi PRIVATE Qt${QT_VERSION_MAJOR}::Widgets)
|
其中 qt_add_executable
指定了所有源文件和ui资源文件。
编译运行后结果如下。
