如何在特定表视图项上设置弹出菜单
我有一个 QTableView(表格视图),我想显示一个弹出菜单,用来展示每个项目的属性。
我需要设置这个右键菜单,只在我右键点击表格中的特定项目时出现。
但是我找不到办法做到这一点。我可以设置菜单在整个表格上出现,但不能为每个项目单独设置。
那么,我该如何在表格视图中的项目上设置右键菜单呢?
如果我的想法不够清楚,请告诉我。
提前谢谢你!
1 个回答
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
}
你也可以选择 安装一个事件处理器,这样就不需要创建子类了。