QMake:如何让UIC生成BOTH头文件和源文件?

时间:2011-07-21 08:36:26

标签: qmake

<。>在.pro文件中,我定义了UI_HEADERS_DIR = ./uic/include UI_SOURCES_DIR = ./uic/src 但是在编译之后,我只获得了包含声明和实现的ui_x.h文件。

这是否意味着QMake无法生成仅包含最小声明的简单头文件,并将所有实现细节放入源文件中?

这是一个示例生成的.h文件,你可以发现声明和实现都放在.h文件中:

/********************************************************************************
** Form generated from reading UI file 'DemoDialog.ui'
**
** Created: Thu 21. Jul 16:08:58 2011
**      by: Qt User Interface Compiler version 4.7.2
**
** WARNING! All changes made in this file will be lost when recompiling UI file!
********************************************************************************/

QT_BEGIN_NAMESPACE

class Ui_DemoDialog
{
public:

    void setupUi(QDialog *DemoDialog)
    {
        if (DemoDialog->objectName().isEmpty())
            DemoDialog->setObjectName(QString::fromUtf8("DemoDialog"));
        DemoDialog->resize(400, 300);

        retranslateUi(DemoDialog);

        QMetaObject::connectSlotsByName(DemoDialog);
    } // setupUi

    void retranslateUi(QDialog *DemoDialog)
    {
        DemoDialog->setWindowTitle(QApplication::translate("DemoDialog", "Dialog", 0, QApplication::UnicodeUTF8));
    } // retranslateUi
};

namespace Ui {
    class DemoDialog: public Ui_DemoDialog {};
} // namespace Ui

QT_END_NAMESPACE

1 个答案:

答案 0 :(得分:0)

读取.ui文件并将其转换为代码的程序是'uic',即用户界面编译器。

它不写出源文件:它只写头。

请参阅its documentation

所以,为什么qmake variable reference page无法说出UI_SOURCES_DIR存在,这就是为什么?

可能有一些未记录的uic选项现在或以前使qmake make uic写出.cpp文件。但即使有,我也不建议使用它,因为担心它将来会消失。