Когда определяется QT_NO_CONTEXTMENU?

В документации Qt по меню они показывают, как переопределить контекстное меню для виджета. Они используют макрос QT_NO_CONTEXTMENU , но они не делают никаких комментариев в тексте об этом макросе, почему он там и кто его использует:

#ifndef QT_NO_CONTEXTMENU
    void contextMenuEvent(QContextMenuEvent *event) override;
#endif // QT_NO_CONTEXTMENU

Когда QT_NO_CONTEXTMENU определяется Qt?

Я видел Qt, определяющий этот макрос для вас, например, в системах, которые не поддерживают контекстные меню. Поскольку объявление QAbstractScrollArea для contextMenuEvent заключено в один и тот же способ, я знаю, что для обеспечения безопасности необходимо также использовать макрос, в противном случае я рискну использовать override для несуществующей функции, которая никогда не будет вызвана. Но я хочу знать, что привело бы к тому, что этот макрос был определен в первую очередь, поскольку мне кажется очень странным, что это был бы макрос во-первых, а не переменная-член QAbstractScrollArea которую можно установить в любое время ,

Всего 1 ответ


Этот макрос определяется, когда опция -no-feature-CONTEXTMENU установлена ​​при конфигурировании и сборке Qt из источника, т.е. с configure инструмента configure . Вы правы, что это для систем, которые не поддерживают контекстные меню. Обычно это встраиваемые системы (например, сенсорный киоск), которые имеют ограниченные ресурсы, поэтому вы не хотите связывать их какими-либо дополнительными модулями, особенно теми, которые в любом случае не будут использоваться.


Есть идеи?

10000