上节讲了项目文件组成,这节进行详细说明。
1).pro文件
2) main主函数文件
3) 窗体相关文件
mainwindow.hide
#ifndef MAINWINDOW_H #define MAINWINDOW_H #include <QMainWindow> //namespace声明一个UI空间,包含一个MainWindow类 namespace Ui { class MainWindow; } //MainWindow类定义,继承QMainWindow类的定义 class MainWindow : public QMainWindow { //使用宏Q_OBJECT,是一个使用信号与槽必须的一个宏 Q_OBJECT //定义MainWindow类的构造函数与析构函数 public: explicit MainWindow(QWidget *parent = nullptr); ~MainWindow(); //定义一个指针 private: Ui::MainWindow *ui; }; #endif // MAINWINDOW_H
Mainwindow.c函数
#include "mainwindow.h" #include "ui_mainwindow.h" //这个函数中只有构造函数与析构函数 //构造函数:执行父类QMainWindow的构造函数, //建立一个Ui::MainWindow类的对象的ui。 MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { //这个函数执行窗口的生成与各类属性的设置,以及信号与槽的关联 ui->setupUi(this); } MainWindow::~MainWindow() { //删除用new建立的指针ui delete ui; }
Mainwindow.ui
不须要知道这个文件是怎么生成的,只须要在UI设计界面进行可视化设计便可。
ui_mainwindow.h字体
//定义Ui_MainWindow,用于封装界面 class Ui_MainWindow { public: //每在界面上拖入一个组件,这里机会生成一个指针变量 QWidget *centralWidget; QLabel *label; QMenuBar *menuBar; QToolBar *mainToolBar; QStatusBar *statusBar; //用于建立各个界面的组件,并设置其位置、大小、字体等相关属性。 void setupUi(QMainWindow *MainWindow) { if (MainWindow->objectName().isEmpty()) MainWindow->setObjectName(QStringLiteral("MainWindow")); MainWindow->resize(400, 300); centralWidget = new QWidget(MainWindow); centralWidget->setObjectName(QStringLiteral("centralWidget")); label = new QLabel(centralWidget); label->setObjectName(QStringLiteral("label")); label->setGeometry(QRect(90, 70, 211, 71)); QFont font; font.setFamily(QStringLiteral("Adobe Myungjo Std M")); font.setPointSize(20); label->setFont(font); MainWindow->setCentralWidget(centralWidget); menuBar = new QMenuBar(MainWindow); menuBar->setObjectName(QStringLiteral("menuBar")); menuBar->setGeometry(QRect(0, 0, 400, 23)); MainWindow->setMenuBar(menuBar); mainToolBar = new QToolBar(MainWindow); mainToolBar->setObjectName(QStringLiteral("mainToolBar")); MainWindow->addToolBar(Qt::TopToolBarArea, mainToolBar); statusBar = new QStatusBar(MainWindow); statusBar->setObjectName(QStringLiteral("statusBar")); MainWindow->setStatusBar(statusBar); retranslateUi(MainWindow); QMetaObject::connectSlotsByName(MainWindow); } // setupUi void retranslateUi(QMainWindow *MainWindow) { MainWindow->setWindowTitle(QApplication::translate("MainWindow", "MainWindow", Q_NULLPTR)); label->setText(QApplication::translate("MainWindow", "\344\275\240\345\245\275\357\274\214\344\270\226\347\225\214\357\274\201\357\274\201", Q_NULLPTR)); } // retranslateUi }; //定义namespace Ui ,并定义一个从Ui_MainWindow继承的类MainWindow namespace Ui { class MainWindow: public Ui_MainWindow {}; } // namespace Ui QT_END_NAMESPACE #endif // UI_MAINWINDOW_H