我有一个QTableView,我需要显示一个显示项目属性的弹出菜单。
只有当您右键单击该tableview中的特定项目时,我才需要将上下文菜单设置为apear。
但是找不到办法去做。我可以设置上下文菜单,当你在桌子上方时出现。
我不能为每个项目。
那么如何在tableview中的项目上设置上下文菜单?
如果想法不够明确请告诉我
提前谢谢
答案 0 :(得分:2)
假设您可以控制菜单弹出的时间,那么您将需要使用indexAt(QPoint)成员函数来确定鼠标所在的项目。
如果您目前无法控制菜单显示的时间,则需要将视图contextMenuPolicy设置为可让您控制该视图的内容。
例如,如果您继承并覆盖contextMenuEvent,则实现可能如下所示:
void MyView::contextMenuEvent ( QContextMenuEvent * event )
{
QModelIndex index = indexAt(event->pos());
if (index.data(Qt::UserRole + NEEDS_CONTEXT_MENU_ROLE_OFFSET).toBool())
// display context menu
else
// don't display context menu
}
你也可以install an event handler来避免继承。