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

标签 qt qlistview

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

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)
}

关于qt - 如何在Qt中处理鼠标右键单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19592418/

相关文章:

qt - QSerialPortInfo : Finding the USB hardware location of a virtual serial Port

c++ - 当 QListView 选择因键盘事件而改变时发出信号?

qt - QItemDelegate 中编辑器的高度

qt - 默认选择 qlistview 中的第一项

python - 从 QListView 中正确删除多选行

c++ - 在 Linux 中确定程序是 GUI 还是控制台应用程序

c++ - Visual Studio 2008 Qt项目配置

qt - 如何禁用属于 Qt 布局的小部件?

c++ - 使用 QDataStream 序列化自定义类导致 C2679 错误

c++ - QListView 样式表不适用于委托(delegate)