cd /d D:QtDemo
執行 uic 命令:uic hello.ui -o ui_hello.h
檢視該標頭檔案程式碼,內容如下:/******************************************************************************** ** Form generated from reading UI file 'hello.ui' ** ** Created by: Qt User Interface Compiler version 5.9.0 ** ** WARNING! All changes made in this file will be lost when recompiling UI file! ********************************************************************************/ #ifndef UI_HELLO_H #define UI_HELLO_H #include <QtCore/QVariant> #include <QtWidgets/QAction> #include <QtWidgets/QApplication> #include <QtWidgets/QButtonGroup> #include <QtWidgets/QHeaderView> #include <QtWidgets/QLabel> #include <QtWidgets/QWidget> QT_BEGIN_NAMESPACE class Ui_Form { public: QLabel *label; void setupUi(QWidget *Form) { if (Form->objectName().isEmpty()) Form->setObjectName(QStringLiteral("Form")); Form->resize(427, 244); label = new QLabel(Form); label->setObjectName(QStringLiteral("label")); label->setGeometry(QRect(10, 10, 200, 40)); retranslateUi(Form); QMetaObject::connectSlotsByName(Form); } // setupUi void retranslateUi(QWidget *Form) { Form->setWindowTitle(QApplication::translate("Form", "Form", Q_NULLPTR)); label->setText(QApplication::translate("Form", "C350257255350250200344270255346226207347275221", Q_NULLPTR)); } // retranslateUi }; namespace Ui { class Form: public Ui_Form {}; } // namespace Ui QT_END_NAMESPACE #endif // UI_HELLO_H程式碼開頭的註釋提醒開發者不要手動修改該標頭檔案,因為 uic 工具下次自動生成 .h 檔案時,會把舊的程式碼全清掉,然後生成新的程式碼內容。
#include <QtWidgets/QApplication> #include <QtWidgets/QWidget> #include "ui_hello.h" int main(int argc, char *argv[]) { QApplication a(argc, argv); QWidget *w = new QWidget(); //主視窗 Ui::Form createUi; //createUi並不是一個真正的視窗 createUi.setupUi(w); //createUi是建立GUI的工具 w->show(); //w是真正的視窗 return a.exec(); }main.cpp 包含了三個標頭檔案 QApplication、QWidget 和 前面用 uic 生成的 ui_hello.h,由於 ui_hello.h 不包含 Q_OBJECT 宏,是不需要用元物件編譯器 moc 處理的。
Ui::Form createUi;
建立了 Ui::Form 類的物件 createUi ,這個物件自己不是一個視窗,它可以為別的視窗物件設定圖形介面。createUi.setupUi(w);
呼叫了 createUi 物件的 setupUi 函數,該函數接收一個表單物件指標,這裡是 w。setupUi 函數裡面的程式碼會為 w 建立內部的控制元件,設定表單大小等等。cd /d D:QtDemo
執行 g++ 命令:g++ main.cpp -std=c++0x -I"D:Qt5.9mingw53_32include" -L"D:Qt5.9mingw53_32lib" -lQt5Core -lQt5Gui -lQt5Widgets -o main
編譯連結成功後,在輸入main.exe
命令就可以看到執行效果。以下是完整流程的截圖: