我有类,派生自QChartView,并在其中启用了橡皮筋选择。
MyChartView::MyChartView(QChart* chart)
:QChartView(chart)
{
setMouseTracking(true);
setInteractive(true);
setRubberBand(RectangleRubberBand);
}Qt文档说
如果释放鼠标左键并启用橡皮筋,则接受事件,并将视图放大到橡皮筋指定的rect中。如果是鼠标右键事件,视图就会被放大。
我不想让正确的按钮放大。我试图覆盖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
}但它不印任何东西。
我怎样才能改变这种行为?
发布于 2016-11-25 09:59:42
问题的解决很简单。我刚刚混合了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
}发布于 2022-06-21 07:25:00
以下是我的Qt5工作解决方案:
void MyChartView::mouseReleaseEvent(QMouseEvent *event)
{
if (event->button() == Qt::RightButton)
{
QGraphicsView::mouseReleaseEvent(event);
}
else
{
QChartView::mouseReleaseEvent(event);
}
}它的优点是允许用右键打开上下文菜单。
https://stackoverflow.com/questions/40783089
复制相似问题