Qt macro keywords cause name collisions

前端 未结 1 1662
执笔经年
执笔经年 2020-12-06 13:26

I am building an NCurses interface for my Qt project. I want to use CDK but I think the signals member of this struct is colliding with the Qt signals

相关标签:
1条回答
  • 2020-12-06 13:54

    You can define the QT_NO_KEYWORDS macro, that disables the “signals” and “slots” macros.

    If you use QMake:

     CONFIG += no_keywords
    

    (Qt Documentation here)

    If you’re using another build system, do whatever it needs to pass -DQT_NO_KEYWORDS to the compiler.

    Defining QT_NO_KEYWORDS will require you to change occurrences of signals to Q_SIGNALS and slots to Q_SLOTS in your Qt code.

    If you cannot change all the Qt code, e.g. because you're using third-party libraries not being "keyword-clean", you could try to undefine "signals" locally before including cdk.h:

    #undef signals
    #include <cdk.h>
    

    I'd recommend to use no_keywords though if possible, as it is less tedious and error-prone.

    0 讨论(0)
提交回复
热议问题