Russian Qt Forum

Qt => 2D и 3D графика => Тема начата: mal от Ноябрь 23, 2010, 08:04



Название: [Решено] библиотека и QGraphicsSceneMouseEvent
Отправлено: mal от Ноябрь 23, 2010, 08:04
Ситуация: сделал из app библиотеку.
После этого сцена перестала ловить сообщения мыши без нажатых клавишь.
Пошерстил документацию и форум - setMouseTracking(true) сцене, вьюпорту вьюхи и виджету, содержащему вьюху не помогают.


Организация проекта:
1. app - QMainWindow->Widget->QGraphicsView - тут QGraphicsSceneMouseEvent работает без всяких заморочек

2. Для работы в качестве библиотеки наружу отдана функция, в  которой создается QDialog . В функцию передается парент. Диалог размещается в этом паренте и создается экземпляр класса из 1.
Т.е. схема такая:
QMainWindow(другое app)->функция либы, создающая QDialog->QMainWindow->Widget->QGraphicsView.  В таком варианте сцена ловит mouseMoveEvent только при нажатой клавише мышки.

Подскажите куда курить, чтоб сцена  видела перемещения мыши независимо от кликнутости кнопок мышки  ?
 ???





Название: Re: библиотека и QGraphicsSceneMouseEvent
Отправлено: GreatSnake от Ноябрь 23, 2010, 09:53
QGraphicsView::setInteractive( true )
Правда по умолчанию должно и так быть включено.


Название: Re: библиотека и QGraphicsSceneMouseEvent
Отправлено: mal от Ноябрь 23, 2010, 10:42
Оказалось все проще некуда (смайл бьющийся лбом о стенку) :
Хотя бы один айтем сцены должен иметь свойство setAcceptHoverEvents(true).

При модернизации проекта, я выкосил группу неактуальных на данный момент айтемов , которым устанавливал это свойство.
Сейчас попробовал тупо установить это свойство пиксмапу, который делаю бэкграундом сцены... и получил желаемый результат - движение мышки ловится во вьюхе.


Название: Re: [Решено] библиотека и QGraphicsSceneMouseEvent
Отправлено: TheBlade от Декабрь 12, 2010, 21:19
точно такаяже проблема: сцена не видит перемещения мыши, в 4.6 все было ок.
Mal, ты говорил что хотел поймать эвент перемещения в сцене, потом написал что движения мышки ловится во вьюхе?
Мне нужн именно поймать перемещение в сцене, без зажатой мыши, никак не могу понять как.
QGraphicsView::setInteractive( true )
и
setAcceptHoverEvents(true) для айтемов сцены не помогают.


Название: Re: QGraphicsSceneMouseEvent только при нажатой кнопке мыши
Отправлено: TheBlade от Декабрь 12, 2010, 21:43
setMouseTracking(true) после этого вьюха стала получать события перемещения, но у сцены такой опции нет, она не наследована от QWidget...


Название: Re: [Решено] библиотека и QGraphicsSceneMouseEvent
Отправлено: mal от Декабрь 14, 2010, 16:54
TheBlade

надо перекрыть у сцены mouseMoveEvent ...