我正在尝试将上下文(右键单击)菜单添加到Qt QListView。我在Qt 3.3中看到有“contextMenuRequested”(我可以使用) - http://doc.qt.digia.com/3.3/qlistview.html#contextMenuRequested。但是,我在Qt4中看不到这样的方法。有谁知道如何将上下文菜单添加到QListView?
答案 0 :(得分:19)
根据您在QWidget
中设置ContextMenuPolicy的方式,您有几个选项。
如果您已将其设置为Qt::DefaultContextMenu
,则只需覆盖contextMenuEvent(QContextMenuEvent*)
中的QWidget
受保护功能。我相信这是默认的。
如果您已将其设置为Qt::ActionsContextMenu
,则只需将所有操作添加到窗口小部件,然后让Qt系统句柄显示上下文菜单。
或者,如果您将其设置为Qt::CustomContextMenu
,则需要连接到customContextMenuRequested()
信号并实现您自己的上下文菜单处理程序。
这些都记录在网上提供的ContextMenuPolicy文档中。
答案 1 :(得分:6)
我不知道您要完成什么,但您可以通过使用要添加到上下文菜单的操作调用QWidget::AddAction(QAction*)
并设置上下文菜单策略,轻松地向任何窗口小部件添加上下文菜单
widget->setContextMenuPolicy(Qt::ActionsContextMenu);
小部件将准备并显示上下文菜单,您需要做的就是将动作triggered()
信号连接到适当的处理程序
答案 2 :(得分:2)
我不知道为什么信号已被删除但它仍然是QWidget
所以你总是可以覆盖
void QWidget::contextMenuEvent ( QContextMenuEvent* );
或
void QWidget::customContextMenuRequested( const QPoint& pos );
取决于窗口小部件的上下文菜单策略设置。