QMake: как позволить UIC генерировать ОБА заголовок и исходные файлы? - PullRequest
0 голосов
/ 21 июля 2011

в файле .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 голосов
/ 14 сентября 2011

Программа, которая читает файл .ui и преобразует его в код, называется 'uic', компилятор интерфейса пользователя.

Она не записывает исходные файлы: она только записывает заголовки.

См. его документацию .

Так что загадка заключается в том, почему справочная страница переменной qmake пытается сказать, что UI_SOURCES_DIR существует?

Может бытьнекоторая недокументированная опция uic, которая теперь или ранее заставляла qmake заставлять uic записывать файл .cpp.Но даже если и есть, я бы не советовал использовать его, опасаясь, что он может исчезнуть в будущем.

...