我想在Qt QListView中添加一个上下文(右键)菜单。我发现在Qt 3.3中有"contextMenuRequested"方法(我可以使用) - http://doc.qt.digia.com/3.3/qlistview.html#contextMenuRequested。然而,在Qt4中我找不到这样的方法。有人知道如何给QListView添加上下文菜单吗?
根据您在 QWidget
中设置的 ContextMenuPolicy,您有几个选项。
如果您将其设置为 Qt::DefaultContextMenu
,则只需覆盖 QWidget
中的受保护函数 contextMenuEvent(QContextMenuEvent*)
。我相信这是默认设置。
如果您将其设置为 Qt::ActionsContextMenu
,则只需将所有操作添加到小部件中,并让 Qt 系统处理显示上下文菜单。
或者,如果您将其设置为 Qt::CustomContextMenu
,则需要连接到 customContextMenuRequested()
信号并实现自己的上下文菜单处理程序。
所有这些都在在线文档的ContextMenuPolicy文件中有详细说明。
我不知道你想要实现什么,但是你可以通过调用QWidget::AddAction(QAction*)
并设置上下文菜单策略来向任何小部件添加上下文菜单,并添加你想要的操作。
widget->setContextMenuPolicy(Qt::ActionsContextMenu);
triggered()
信号连接到适当的处理程序。我不知道为什么信号被移除了,但它仍然是一个QWidget
,所以您可以始终进行覆盖。
void QWidget::contextMenuEvent ( QContextMenuEvent* );
void QWidget::customContextMenuRequested( const QPoint& pos );