Russian Qt Forum
Ноябрь 24, 2024, 13:29 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: [Решено] библиотека и QGraphicsSceneMouseEvent  (Прочитано 3270 раз)
mal
Гость
« : Ноябрь 23, 2010, 08:04 »

Ситуация: сделал из app библиотеку.
После этого сцена перестала ловить сообщения мыши без нажатых клавишь.
Пошерстил документацию и форум - setMouseTracking(true) сцене, вьюпорту вьюхи и виджету, содержащему вьюху не помогают.


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

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

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



« Последнее редактирование: Ноябрь 23, 2010, 10:43 от mal » Записан
GreatSnake
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2921



Просмотр профиля
« Ответ #1 : Ноябрь 23, 2010, 09:53 »

QGraphicsView::setInteractive( true )
Правда по умолчанию должно и так быть включено.
Записан

Qt 5.11/4.8.7 (X11/Win)
mal
Гость
« Ответ #2 : Ноябрь 23, 2010, 10:42 »

Оказалось все проще некуда (смайл бьющийся лбом о стенку) :
Хотя бы один айтем сцены должен иметь свойство setAcceptHoverEvents(true).

При модернизации проекта, я выкосил группу неактуальных на данный момент айтемов , которым устанавливал это свойство.
Сейчас попробовал тупо установить это свойство пиксмапу, который делаю бэкграундом сцены... и получил желаемый результат - движение мышки ловится во вьюхе.
Записан
TheBlade
Гость
« Ответ #3 : Декабрь 12, 2010, 21:19 »

точно такаяже проблема: сцена не видит перемещения мыши, в 4.6 все было ок.
Mal, ты говорил что хотел поймать эвент перемещения в сцене, потом написал что движения мышки ловится во вьюхе?
Мне нужн именно поймать перемещение в сцене, без зажатой мыши, никак не могу понять как.
QGraphicsView::setInteractive( true )
и
setAcceptHoverEvents(true) для айтемов сцены не помогают.
Записан
TheBlade
Гость
« Ответ #4 : Декабрь 12, 2010, 21:43 »

setMouseTracking(true) после этого вьюха стала получать события перемещения, но у сцены такой опции нет, она не наследована от QWidget...
Записан
mal
Гость
« Ответ #5 : Декабрь 14, 2010, 16:54 »

TheBlade

надо перекрыть у сцены mouseMoveEvent ...
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.24 секунд. Запросов: 22.