Название: [РЕШЕНО] ScrollHandDrag не работает. Отправлено: once_again_abc от Декабрь 16, 2013, 09:51 Есть класс, производный от QGraphicsView, отображающий QGraphicsScene с несколькими QGraphicsPixmapItem-с. Хочется таскать сцену с айтемами как обычно это делается в любых приложениях со скролл барами.
в конструкторе наследника QGraphicsView делаю это: Код: setAlignment(Qt::AlignCenter); переопределяю keyPressEvent и keyReleaseEvent Код: void ImageWidget::keyPressEvent( QKeyEvent * event ) в mouseMoveEvent ничего не делаю, надеюсь что QGraphicsView сам все сделает: Код: void ImageWidget::mouseMoveEvent( QMouseEvent *event ) в результате, чтобы сделать небольшой drag мне нужно сперва кликнуть внутри viewport-a. получается такая последовательность: кликнул левой клавишей мыши внутри вьюпорта, нажал пробел (по пробелу хочу перетаскивать), чуть-чуть передвинул сцену и т.д. При этом куча событий с номером 129 сыпятся родителю в event обработчик. Что я делаю не так или что я не так понял?! П.С.: проблема была в неправильных обработчиках mouse press/release. Вот правильная версия: Код: void ImageWidget::mousePressEvent( QMouseEvent *event ) Название: Re: ScrollHandDrag не работает. Отправлено: GreatSnake от Декабрь 16, 2013, 10:33 Все клавиатурные события системой посылаются в главное окно.
Далее уже само приложение отсылает событие виджету с фокусом. Так что всё делается правильно. Если хочешь делать без дополнительного клика, то в глобальном eventFilter() отлавливай нажатие <Space> и в зависимости от положения мыши ищи нужный виджет и сам отсылай ему событие. Название: Re: ScrollHandDrag не работает. Отправлено: once_again_abc от Декабрь 16, 2013, 12:45 Какое событие мне нужно отсылать дочернему QGraphicsView? И почему рандомно прерывается перетаскивание? Получается, что мой QGraphicsView виджет во время перетаскивания вдруг теряет фокус ввода... что это за глюк? Версия Qt 4.6.2.
|