Доступно ли определение для 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++, это почти всегда будет работать.