Доступно ли определение для Qt gui?
у меня есть только один вопрос: доступно ли определение (или что-то подобное), если вы компилируете некоторый код, чтобы узнать, установлен ли флаг GUI?
я объясню лучше. У меня есть код, который я хочу использовать для разных программ в QT. Теперь некоторые части этого кода используются только в приложениях GUI (или лучше виджетов) и зависят от QtGui и QtWidgets. Я хотел бы поместить эти части в условный блок (#if
или #ifdef
) для их компиляции только в проекты, в которые включены библиотеки GUI и/или виджетов.
и, прежде чем вы это предложите, создание библиотеки не является решением. Я бы предпочел определение...
EDIT:
Наверное,я не совсем ясно объяснил. То, что я ищу, - это определение, связанное с включением GUI. Пример:
файл myfile.h
#ifdef THE_QT_GUI_DEFINE_FLAG
#include <QPainter.h>
#endif
проект A: в файле QMake я пишу:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
проект B: в файле QMake I пиши:
QT -= gui
теперь, я хочу!--5--> быть включенным только в проект A. знаете ли вы, что такое набор флагов define при добавлении библиотеки gui? Я пробовал с QT_QTGUI_MODULE_H
, но он не работает (вероятно, потому, что он используется только при компиляции библиотеки qt).
2 ответов
хорошо, я нашел его. Вдохновленный ответами, я пошел копаться в автоматически сгенерированных файлах и, просматривая файлы lib, я нашел
Qt.2.1\msvc2010\mkspecs\modules\qt_lib_gui.pri
, который имеет строку
QT.gui.DEFINES = QT_GUI_LIB
и потом... Это волшебное слово! :)
теперь если я ставлю
#ifdef QT_GUI_LIB
#include <QPainter.h>
#endif
QPainter
входит только в проекты с поддержкой gui.
спасибо всем за помощь!
когда вы сомневаетесь в чем-либо в Qt, помните следующее:
Qt не " как C++". Это C++. Если это законно в C++, то это законно в Qt. Некоторые специальные правила входят в QObject (например, множественное наследование), но если это что-то со стороны C++, это почти всегда будет работать.