如何创建QT工程

2009年3月30日 | 分类: Programming | 标签: , , ,
刚才打了一大段字,不小心给其他页面覆盖了……看来WP的自动保存功能还是得开启……

最近有心学一下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.h

3. 编写主窗口及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

  1. Moligaloo
    2009年8月15日12:54

    @Ant
    直接include肯定是不行的,ui文件是一个XML文件,要想直接利用这个文件需要用到 QUiLoader 这个类,用它来从 ui 文件里动态生成一个 QWidget 出来。

  2. 2009年4月11日13:29

    现在那个.ui的文件好像不用编译成.h的就可以直接用函数调用。。。