У меня есть класс, полученный из 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
}
но это ничего не печатает.
Как я могу изменить это поведение?
Решение проблемы очень просто. Я только что перепутал 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
}
Других решений пока нет …