【问题标题】:how to handle mouse Right click in Qt如何在Qt中处理鼠标右键单击
【发布时间】:2013-10-25 14:20:59
【问题描述】:

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

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

这不起作用,并且永远不会调用上述插槽。

【问题讨论】:

  • 您是否设置了contextmenu 政策?
  • 是的,我添加了上下文菜单策略,例如 p_FriendsListView->setContextMenuPolicy(Qt::CustomContextMenu);

标签: qt qlistview


【解决方案1】:

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

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

【讨论】:

  • 从名字我猜QkFriendsListView继承了Qt的ListView,对吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-08-15
相关资源
最近更新 更多