重新映射 qwidget 上的上下文菜单调用
Posted
技术标签:
【中文标题】重新映射 qwidget 上的上下文菜单调用【英文标题】:Remap context menu call on qwidget 【发布时间】:2015-10-11 20:23:22 【问题描述】:我的自定义小部件继承自 QWidget,并且我已将小部件的菜单调用信号连接到我的插槽。
connect(m_ontologyView, SIGNAL(customContextMenuRequested(QPoint)), SLOT(showContextMenuSlot(QPoint)));
现在我希望用户能够更改调用上下文菜单的按钮。通常它是用鼠标右键调用的,但是我如何告诉小部件用我选择的按钮调用菜单?
我使用的是 Qt 5.4.0
【问题讨论】:
【参考方案1】:您需要重新实现小部件鼠标事件函数QWidget::mousePressEvent, QWidget::mouseReleaseEvent and QWidget::mouseMoveEvent
,而不是使用QWidget::customContextMenuRequested
。在这些事件中,您可以使用QMenu::popup
向您显示菜单。 (可以从鼠标事件中提取点)。
【讨论】:
以上是关于重新映射 qwidget 上的上下文菜单调用的主要内容,如果未能解决你的问题,请参考以下文章
QWidget closeEvent(...) 没有被 QProcess::terminate() 调用
从 QGraphicsItem 上的上下文菜单操作中获取事件
为啥 Windows Shell 上下文菜单处理程序会破坏 Windows 8/10 上的高级用户菜单 (Win+x)?