何时定义QT_NO_CONTEXTMENU?

When is QT_NO_CONTEXTMENU defined?

本文关键字:CONTEXTMENU NO 何时 QT 定义      更新时间:2023-10-16

在菜单上的Qt文档中,他们展示了如何覆盖小部件的上下文菜单。他们使用宏QT_NO_CONTEXTMENU,但他们没有在文本中对这个宏、为什么它在那里或谁使用它做任何评论:

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

Qt什么时候定义QT_NO_CONTEXTMENU?

例如,我可以看到Qt在不支持上下文菜单的系统上为您定义此宏。由于QAbstractScrollAreacontextMenuEvent声明是以同样的方式包装的,我知道为了安全起见,我也必须使用宏,否则我冒着在永远不会被调用的不存在的函数上使用override的风险。但是我想知道是什么会导致首先定义这个宏,因为在我看来,这首先是一个宏,而不是可以随时设置的QAbstractScrollArea的成员变量,这对我来说似乎很奇怪。

此宏是在从源代码配置和构建Qt时设置-no-feature-CONTEXTMENU选项时定义的,即使用configure工具。您是正确的,它适用于不支持上下文菜单的系统。这些通常是资源有限的嵌入式系统(例如触摸屏信息亭(,因此您不想用任何额外的模块来困扰它们,尤其是那些无论如何都不会使用的模块。