Название: своё событие QEvent QGraphicsItem Отправлено: daimon от Декабрь 04, 2011, 21:19 есть шар (QGraphicsEllipseItem), на нём текст (QGraphicTextItem), возможность выделения и перемещения для текста выключил, так как не смог перемещать из-за этого шар при попадании на текст.
для редактирования текста придумал двойной клип мыши на тексте. основная проблема - заставить срабатывать событие двойного нажатия кнопки мыши без переопределения события mousePressEvent(...) в классе текста проблема состоит в том, что, когда мышь попадает под текст, то срабатывает mousePressEvent и я не могу захватывать шар и двигать- а мне нужно двигать всегда, если захват прошёл по всему rect шара, для этого я хочу обрабатывать только двойной клик (для редактирования текста) самый тупой вариант сделать public mouseDoubleClickEvent в классе текста и вызывать его в событии двойного нажатия мыши в классе шара - просто перенаправить объект события, но логичней бы было отправлять двойной клик в этой же функции объекту текста (qApp->sendEvent(...)) - но как пишет QAssist это невозможно - нужен свой mousePressEvent в классе текста думаю самый логичный вывод из этого всего - свой класс события - двойной клик, ну и его программно создавать потом в функции mouseDoubleClickEvent класса шара и отправлять его классу текста (sendEvent()), но тут другая беда как текст сможет обработать мой класс события если уж совсе туго, то думаю как-бы заставить при движении текста тоже тягать с собой и шар, ведь текст та просто дочерний элемент (поставлю для текста свойства selectable и movable) пробую так Код
почему-то событие типа User=1000 не принимается объектом текста, хотя sendEvent() срабатывает у Node что не так? Название: Re: своё событие QEvent QGraphicsItem Отправлено: artiom_kh от Март 02, 2012, 12:28 в классе своего текстового айтема (унаследованного от QGraphicTextItem) сделай так: http://www.prog.org.ru/index.php?topic=20748.msg145092#msg145092 (http://www.prog.org.ru/index.php?topic=20748.msg145092#msg145092), даблклик пусть обрабатывает шарик (QGraphicsEllipseItem) и запускает редактирование текстового айтема
|