如何处理鼠标在Qt中右键单击

时间:2013-10-25 14:21:00

标签: qt qlistview

我正在使用QListView来显示朋友名字的列表。当我点击名称时,它应该选择一个名称并显示与个人资料相关的信息,然后在右键单击它需要显示上下文菜单而不选择名称并显示个人资料信息。我面临的问题是右键单击它是选择名称,还显示上下文菜单。我不希望在右键单击中选择名称,只显示上下文菜单。我正在使用Qt contextmenuevent,如:

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

这不起作用,上面的插槽永远不会被调用。

1 个答案:

答案 0 :(得分:5)

使用mousePressEvent并处理右键单击,如下所示

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