如何在Qt中处理鼠标右键点击事件

9

我正在使用QListView来展示朋友们的名字列表。当我点击一个名字时,它应该选择一个名字并显示相关的个人资料信息;而在右键点击时,它需要显示上下文菜单,而不是选择一个名字并显示个人资料信息。我遇到的问题是,在右键点击时,它会选择名字并显示上下文菜单。我不希望在右键点击时选择名字,只想显示上下文菜单。我正在使用Qt contextmenuevent,代码如下:

void contextMenuEvent(QContextMenuEvent *ce)
{
    QPoint pos = ce->pos();
    emit customContextMenuRequested(pos);
}   

这个不起作用,上面的插槽从未被调用。


你设置了contextmenu策略吗? - ratchet freak
是的,我添加了上下文菜单策略,如下: p_FriendsListView->setContextMenuPolicy(Qt::CustomContextMenu); - Sanath Reddy
1个回答

12

使用mousePressEvent并像下面这样处理右键单击事件:

void QkFriendsListView::mousePressEvent(QMouseEvent *event)
{
    if(event->button() == Qt::RightButton)
    {
        emit customContextMenuRequested(event->pos());
    }
    else
        QListView::mousePressEvent(event)
}

从名称上看,我猜QkFriendsListView继承了Qt的ListView,这是正确的吗? - Yousuf Azad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接