2016-11-24 271 views
2

我上课,从QChartView导出,我已经启用橡皮筋选择它QChartView,橡皮筋和鼠标右键行为

MyChartView::MyChartView(QChart* chart) 
:QChartView(chart) 
{ 
    setMouseTracking(true); 
    setInteractive(true); 
    setRubberBand(RectangleRubberBand); 
} 

Qt文档说,

如果鼠标左键释放并且橡皮筋被启用,则事件被接受并且视图被放大到由橡皮筋指定的矩形。如果它是一个鼠标右键事件,那么视图会被缩小。

我不想右键缩小。我试图覆盖mouseReleaseEvent

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 
} 

但它不打印任何东西。

我该如何改变这种行为?

回答

1

问题解决方案非常简单。我刚刚混合了button()buttons()的功能。以下代码正常工作:

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 
}