Хочу реализовать масштабирование в QtGraphicsView через колесико мыши. На данный момент делаю это через фильтр событий следующим способом:
bool MainWindow::eventFilter(QObject *target, QEvent *event)
{
if (target == ui->graphicsView || event->type() == QEvent::Wheel) {
QWheelEvent *wheelEvent = static_cast<QWheelEvent *>(event);
int delta = wheelEvent->delta();
double scalePlus = 1.2;
double scaleMinus = 0.8;
if(delta > 0){
ui->graphicsView->scale(scalePlus, scalePlus);
qDebug() << "delta = " << delta;
} else {
ui->graphicsView->scale(scaleMinus, scaleMinus);
qDebug() << "delta = " << delta;
}
return true;
}
}
}
Работает это ровно до того, как появляется ScrollBar. После этого колесико мыши просто начинает перехватываться скрулбаром. Как это обойти? Можно и вариант с переопредлелением класса и функции.
Нужно было добавить фильтрацию событий вертикального скролла graphicsView через:
ui->graphicsView->verticalScrollBar()->installEventFilter(this)
А после в функции фильтра событий добавить в проверку скролл:
if ((target == ui->graphicsView || target == ui->graphicsView->verticalScrollBar()) && event->type() == QEvent::Wheel) {
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости