Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Qt中处理鼠标右键单击_Qt_Qlistview - Fatal编程技术网

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

如何在Qt中处理鼠标右键单击,qt,qlistview,Qt,Qlistview,我正在使用QListView显示朋友的姓名列表。当我单击一个名称时,它应该选择一个名称并显示配置文件相关信息,右键单击它需要显示上下文菜单,而不选择名称并显示配置文件信息。我面临的问题是右键单击,它选择了名称并显示了关联菜单。我不希望在右键单击时选择名称,只显示上下文菜单。我使用的Qt contextmenuevent如下所示: void contextMenuEvent(QContextMenuEvent *ce) { QPoint pos = ce->pos(); em

我正在使用QListView显示朋友的姓名列表。当我单击一个名称时,它应该选择一个名称并显示配置文件相关信息,右键单击它需要显示上下文菜单,而不选择名称并显示配置文件信息。我面临的问题是右键单击,它选择了名称并显示了关联菜单。我不希望在右键单击时选择名称,只显示上下文菜单。我使用的Qt contextmenuevent如下所示:

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

这不起作用,并且从未调用上述插槽。

使用mousePressEvent并按如下方式处理右键单击

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

您设置了策略吗?是的,我添加了上下文菜单策略,如p_FriendsListView->setContextMenuPolicy(Qt::CustomContextMenu);从名称来看,我猜
QkFriendsListView
继承了Qt的
ListView
,对吗?