Я создал предварительный просмотр, который отображает рендер. Я использовал функцию Image Viewer Example для масштабирования - поэтому у меня есть класс, наследующий QScrollArea
, способный отображать изображение в QLabel
и масштабирование/выключение/соответствие определенным ограничениям. Я показывал полосы прокрутки «по мере необходимости».Масштабирование и панорамирование изображения в QScrollArea
В качестве нового требования, я должен быть в состоянии сделать панорамирование и не показывают скроллбары.
Я искал способы сделать это - и нашел examples людей, которые используют мышь, перемещают и отпускают события, чтобы связать точку на изображении с полосами прокрутки.
проблема:
1) направление движения, если полосы прокрутки являются невидимыми, является неожиданной - в панорамировании он объект двигается в направлении мышей (остается под мышью), в то время как полосы прокрутки двигаться в противоположном направлении
2) Я думаю, что этот ход ограничен размером полосы прокрутки, поэтому ... если я посчитаю обратный ход, я бы ударил по стене, пока еще есть место для перемещения в одном направлении.
3) Это не сработало бы с увеличением, что происходит именно тогда, когда требуется панорамирование; потребуются более сложные вычисления.
я мог поочередно использовать QGraphicsView
и
setDragMode(ScrollHandDrag);
Это будет работать хорошо с масштабирования, а также, и я не должен был бы реализовать его самостоятельно.
Причина, по которой я еще не сделал этого, должен добавить QGraphicsScene
, а также QGraphicsPixmapItem
, содержащий изображение, которое я хочу, - затем найти, как отключить все события мыши, кроме панорамирования, и по-прежнему использовать QScrollArea
. QGraphicsView
;
Кажется, что слишком много накладных расходов (и это должно быть очень легким, для встроенного устройства с небольшой скоростью и памятью).
Что является лучшим вариантом? есть ли способ, которым я могу панорамировать увеличенное изображение в телезрителе, насколько это возможно?