qtwidght默认结构
项目结构
windows qt6
使用的是cmake
自行创建了src和hearder目录
CMakeLists.txt 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 cmake_minimum_required (VERSION 3.14 )project (MyQtApp)set (CMAKE_CXX_STANDARD 17 )set (CMAKE_PREFIX_PATH "D:/mysoft/qt/6.8.1/mingw_64" )set (CMAKE_AUTOMOC ON )set (CMAKE_AUTORCC ON )set (CMAKE_AUTOUIC ON )find_package (Qt6 COMPONENTS Core Widgets REQUIRED)file (GLOB SRC_FILES "${CMAKE_SOURCE_DIR}/src/*.cpp" )file (GLOB HEADER_FILES "${CMAKE_SOURCE_DIR}/header/*.h" )file (GLOB UI_FILES "${CMAKE_SOURCE_DIR}/src/*.ui" )add_executable (MyQtApp ${SRC_FILES} ${HEADER_FILES} ${UI_FILES} )target_include_directories (MyQtApp PRIVATE "${CMAKE_SOURCE_DIR}/header" )target_link_libraries (MyQtApp Qt6::Widgets)
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 29 #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.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 #include "mainwindow.h" #include "./ui_mainwindow.h" MainWindow::MainWindow (QWidget *parent) : QMainWindow (parent), ui (new Ui::MainWindow) { ui->setupUi (this ); } MainWindow::~MainWindow () { delete ui; }
ui_mainwindow.h
UIC工具.ui文件生成的.h文件,它负责定义和初始化用户界面中的控件和布局
setupUi:初始化控件
retranslateUi:国际化支持
1 2 3 namespace Ui { class MainWindow : public Ui_MainWindow {}; }
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 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 #ifndef UI_MAINWINDOW_H #define UI_MAINWINDOW_H #include <QtCore/QVariant> #include <QtWidgets/QApplication> #include <QtWidgets/QMainWindow> #include <QtWidgets/QMenuBar> #include <QtWidgets/QStatusBar> #include <QtWidgets/QWidget> QT_BEGIN_NAMESPACE class Ui_MainWindow { public : QWidget *centralwidget; QMenuBar *menubar; QStatusBar *statusbar; void setupUi (QMainWindow *MainWindow) { if (MainWindow->objectName ().isEmpty ()) MainWindow->setObjectName ("MainWindow" ); MainWindow->resize (800 , 600 ); centralwidget = new QWidget (MainWindow); centralwidget->setObjectName ("centralwidget" ); MainWindow->setCentralWidget (centralwidget); menubar = new QMenuBar (MainWindow); menubar->setObjectName ("menubar" ); menubar->setGeometry (QRect (0 , 0 , 800 , 21 )); MainWindow->setMenuBar (menubar); statusbar = new QStatusBar (MainWindow); statusbar->setObjectName ("statusbar" ); MainWindow->setStatusBar (statusbar); retranslateUi (MainWindow); QMetaObject::connectSlotsByName (MainWindow); } void retranslateUi (QMainWindow *MainWindow) { MainWindow->setWindowTitle (QCoreApplication::translate ("MainWindow" , "MainWindow" , nullptr )); } }; namespace Ui { class MainWindow : public Ui_MainWindow {}; } QT_END_NAMESPACE #endif
main.cpp 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 #include "mainwindow.h" #include <QApplication> int main (int argc, char *argv[]) { QApplication a (argc, argv) ; MainWindow w; w.show (); return a.exec (); }