如何在特定的表视图项上设置弹出菜单

时间:2010-06-07 21:49:07

标签: python qt qt4 pyqt pyqt4


我有一个QTableView,我需要显示一个显示项目属性的弹出菜单。 只有当您右键单击该tableview中的特定项目时,我才需要将上下文菜单设置为apear。 但是找不到办法去做。我可以设置上下文菜单,当你在桌子上方时出现。 我不能为每个项目。 那么如何在tableview中的项目上设置上下文菜单?


如果想法不够明确请告诉我 提前谢谢

1 个答案:

答案 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来避免继承。