如何创建QT工程
最近有心学一下GUI编程,在GTK, wxWidgets和QT之间选择,最后因为QT Designer和喜欢C++的缘故选择了QT。当然QT4 Designer也不是那么傻瓜化的东西,有很多步骤都需要自己来完成。经过一番Google上的学习之后,我总算完成了一个简单的QT工程的创建,因此以这个工程为例,记录一下创建过程,以供参考。
项目名称:POS
主程序名:main.cpp
主窗口及SIGNAL/SLOT处理:POSMainWindow[.h, .cpp]
界面文件:ui_POSMainWindow.h, POSMainWindow.ui
Meta Object Compiler文件:moc_POSMainWindow[.h, .cpp]
1. 新建界面配置文件(POSMainWindow.ui)
通过在QT4 Designer中拖拽拖拽就能生成一个基本的.ui配置文件了。
2. 生成ui头文件(ui_POSMainWindow.h)
uic POSMainWindow.ui -o ui_POSMainWindow.h3. 编写主窗口及SIGNAL/SLOT处理文件(POSMainWindow.h, POSMainWindow.cpp)
POSMainWindow.h
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #ifndef _POSMAINWINDOW_H_ #define _POSMAINWINDOW_H_ #include <qmainwindow.h> #include "ui_POSMainWindow.h" class POSMainWindow : public QMainWindow, public Ui::POSMainWindow { Q_OBJECT public: POSMainWindow(QMainWindow *parent = 0); public slots: // your own slots }; #endif /*_POSMAINWINDOW_H_*/ |
POSMainWindow.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include "POSMainWindow.h" POSMainWindow::POSMainWindow(QMainWindow *parent) : QMainWindow(parent) { setupUi(this); this->show(); // connect(panel, SIGNAL(...()), this, SLOT(...())); } //void POSMainWindow::SLOT() //{ // ........... //} |
4. 生成MOC文件(moc_POSMainWindow.h, moc_POSMainWindow.cpp)
因为自定义SLOT之前需要使用Q_OBJECT宏,而这个宏跟元对象编译器有关,因此要生成对应的moc文件才不至于在link的时候报错。
moc MainWindow.h -o moc_MainWindow.h之后生成了两个moc前缀的文件。
5. 生成主程序(main.cpp)
1 2 3 4 5 6 7 8 | #include "POSMainWindow.h" int main(int argc, char *argv[]) { QApplication app(argc, argv); new POSMainWindow; return app.exec(); } |
6. 生成Makefile
qmake -project qmake make
7. 试试看
./POS


















@Ant
直接include肯定是不行的,ui文件是一个XML文件,要想直接利用这个文件需要用到 QUiLoader 这个类,用它来从 ui 文件里动态生成一个 QWidget 出来。
@Moligaloo, 哦,是这样啊。见笑了,呵呵~
现在那个.ui的文件好像不用编译成.h的就可以直接用函数调用。。。
@YuLei666, 好像见过这种用法……
@Ant, .ui文件怎么直接调用啦?
@risent, 好像是#include "xxx.ui",具体不记得了,现在好久没写代码了。