2016-11-24 79 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 
}