首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QChartView、RubberBand和鼠标右键行为

QChartView、RubberBand和鼠标右键行为
EN

Stack Overflow用户
提问于 2016-11-24 09:55:43
回答 2查看 2.7K关注 0票数 2

我有类,派生自QChartView,并在其中启用了橡皮筋选择。

代码语言:javascript
复制
MyChartView::MyChartView(QChart* chart)
:QChartView(chart)
{
    setMouseTracking(true);
    setInteractive(true);
    setRubberBand(RectangleRubberBand);
}

Qt文档说

如果释放鼠标左键并启用橡皮筋,则接受事件,并将视图放大到橡皮筋指定的rect中。如果是鼠标右键事件,视图就会被放大。

我不想让正确的按钮放大。我试图覆盖mouseReleaseEvent

代码语言:javascript
复制
void MyChartView::mouseReleaseEvent(QMouseEvent *e)
{
    if(e->buttons() == Qt::RightButton)
    {
        std::cout << "my overriden event" << std::endl;
        return; //event doesn't go further
    }
    QChartView::mouseReleaseEvent(e);//any other event
}

但它不印任何东西。

我怎样才能改变这种行为?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-11-25 09:59:42

问题的解决很简单。我刚刚混合了button()buttons()函数。以下代码正常工作:

代码语言:javascript
复制
void MyChartView::mouseReleaseEvent(QMouseEvent *e)
{
    if(e->button() == Qt::RightButton)
    {
        std::cout << "my overriden event" << std::endl;
        return; //event doesn't go further
    }
    QChartView::mouseReleaseEvent(e);//any other event
}
票数 2
EN

Stack Overflow用户

发布于 2022-06-21 07:25:00

以下是我的Qt5工作解决方案:

代码语言:javascript
复制
void MyChartView::mouseReleaseEvent(QMouseEvent *event)
{
    if (event->button() == Qt::RightButton)
    {
        QGraphicsView::mouseReleaseEvent(event);
    }
    else
    {
        QChartView::mouseReleaseEvent(event);
    }
}

它的优点是允许用右键打开上下文菜单。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40783089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档