В документации Qt по меню они показывают, как переопределить контекстное меню для виджета. Они используют макрос QT_NO_CONTEXTMENU
, но не делают никаких комментариев в тексте об этом макросе, почему он там и кто его использует:
#ifndef QT_NO_CONTEXTMENU
void contextMenuEvent(QContextMenuEvent *event) override;
#endif // QT_NO_CONTEXTMENU
Когда QT_NO_CONTEXTMENU определяется Qt?
Я мог видеть, как Qt определяет этот макрос для вас в системах, которые, например, не поддерживают контекстные меню. Поскольку объявление QAbstractScrollArea
s contextMenuEvent
заключено таким же образом, я знаю, что для обеспечения безопасности необходимо также использовать макрос, иначе я рискну использовать override
для несуществующей функции, которая никогда не будет вызвана. Но я хочу знать, что привело бы к тому, что этот макрос был определен в первую очередь, поскольку мне кажется очень странным, что это был бы макрос во-первых, а не переменная-член QAbstractScrollArea
, которую можно установить в в любое время.