[英]Is a define available for Qt gui?
我只有一個問題:如果您正在編譯某些代碼以了解GUI標志是否已設置,那么可以使用定義(或類似的東西)嗎?
我會更好地解釋。 我想在QT中為不同的程序重用一些代碼。 現在,此代碼的某些部分僅用於GUI應用程序(或更好的窗口小部件應用程序),並依賴於QtGui和QtWidgets。 我想將這些部分放在條件塊( #if
或#ifdef
)中,以便僅在包含GUI和/或小部件庫的項目中進行編譯。
並且,在您提出建議之前,制作庫不是解決方案。 我更喜歡定義......
編輯:
可能我沒有清楚地解釋自己。 我正在尋找的是與GUI包含相關的定義。 例:
FILE myfile.h
#ifdef THE_QT_GUI_DEFINE_FLAG
#include <QPainter.h>
#endif
PROJECT A:在我寫的QMake文件中:
QT += core gui
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
項目B:在我寫的QMake文件中:
QT -= gui
現在,我希望QPainter.h
只包含在項目A中。你知道我添加gui庫時設置的define標志是什么嗎? 我嘗試使用QT_QTGUI_MODULE_H
,但它不起作用(可能是因為它在編譯THE qt庫時使用)。
好的,我找到了。 受到答案的啟發,我開始挖掘自動生成的文件,搜索lib文件,我找到了
Qt\5.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 ++方面,它幾乎總能發揮作用。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.