7

我正在尝试将上下文(右键单击)菜单添加到 Qt QListView。我在 Qt 3.3 中看到有“contextMenuRequested”(我可以使用)- http://doc.qt.digia.com/3.3/qlistview.html#contextMenuRequested。但是,我在 Qt4 中看不到这样的方法。有谁知道如何向 QListView 添加上下文菜单?

4

3 回答 3

19

根据您在其中设置ContextMenuPolicy的方式,QWidget您有几个选项。

如果您已将其设置为,Qt::DefaultContextMenu则只需contextMenuEvent(QContextMenuEvent*)覆盖QWidget. 我相信这是默认设置。

如果您已将其设置为,Qt::ActionsContextMenu那么只需将所有操作添加到您的小部件并让 Qt 系统处理显示上下文菜单。

或者,如果您已将其设置为,Qt::CustomContextMenu您需要连接到customContextMenuRequested()信号并实现您自己的上下文菜单处理程序。

这一切都记录在在线提供的ContextMenuPolicy文档中。

于 2011-10-06T05:53:14.283 回答
6

我不知道您要完成什么,但是您可以通过调用QWidget::AddAction(QAction*)要添加到上下文菜单的操作并设置上下文菜单策略来轻松地将上下文菜单添加到任何小部件

widget->setContextMenuPolicy(Qt::ActionsContextMenu);

小部件将准备并显示上下文菜单,您需要做的就是将动作triggered()信号连接到适当的处理程序

于 2010-05-20T16:53:22.460 回答
2

我不知道为什么信号已被删除但它仍然是一个QWidget所以你总是可以覆盖

void QWidget::contextMenuEvent ( QContextMenuEvent* );

或者

void QWidget::customContextMenuRequested( const QPoint& pos );

取决于小部件的上下文菜单策略设置。

于 2010-05-19T22:47:36.360 回答