Я не уверен, хотите ли вы, чтобы колесо масштабирования только когда-либо использовалось для масштабирования изображения, или если вы хотите, чтобы колесо прокрутки управляло масштабированием, когда изображение меньше, чем область просмотра области прокрутки, а затемиспользуйте колесо прокрутки для прокрутки, когда изображение больше, чем область просмотра области прокрутки.В любом случае вы должны иметь возможность настроить способ обработки колеса следующим образом:
Поскольку я на самом деле не пробовал этот диск, я не уверен, будет ли он работать.Есть надежда, что если вы установите фильтр событий и установите ignore для события, событие все равно будет распространено обратно в ваш виджет изображения.Это позволит вам оставить текущую обработку мыши в виджете изображения без изменений.
bool YourImageWidget::eventFilter(QObject *obj, QEvent *event)
{
if((obj == scrollAreaPointer) && (event->type() == QEvent::Wheel))
{
if(!scrollAreaShouldHandleWheel)
{
event->ignore();
}
}
return false; // always pass the event back to the scroll area
}
Флаг scrollAreaShouldHandleWheel
является логическим значением, которое вы устанавливаете из виджета изображения в зависимости от того, хотите ли вы иметь область прокрутки.для обработки событий колеса.
Где-то в вашем коде вы бы установили свой виджет изображения в качестве фильтра событий для scrollarea.
scrollArea->installEventFilter(imageWidget);
Если это не работает, вы всегда можете использоватьэтот фильтр, чтобы убедиться, что ваш виджет получает событие и обрабатывает его напрямую, а затем возвращает true, чтобы область прокрутки не смогла получить событие.