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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Как таскать сцену, если курсор внутри айтема?  (Прочитано 3144 раз)
iroln
Гость
« : Май 29, 2012, 15:15 »

Всем привет!

Описываю проблему.

Дано (смотрите картинку):
QGraphicsView
QGraphicsScene
QGraphicsRectItem

У QGraphicsView включен режим DragMode = ScrollHandDrag
У QGraphicsRectItem флаг ItemIsMovable = false

Что хочу:
Хочу таскать мышкой вид над сценой, если курсор находится внутри айтема. Проблема: не тащится. Улыбающийся
То есть, другими словами, если у айтема снят флаг Movable, как сделать его "прозрачным", то есть как заставить Qt его игнорировать, никак не учитывать при таскании внутри вида?

Перепробовал для QGraphicsRectItem setEnable(false), setActive(fasle), ItemIsMovable = false, ItemIsFocusable = false, setAcceptedMouseButtons(Qt.NoButton) - ничего не помогает!
« Последнее редактирование: Май 30, 2012, 20:51 от iroln » Записан
iroln
Гость
« Ответ #1 : Май 29, 2012, 15:55 »

Небольшое уточнение.

При попытке схватить сцену и протащить, когда курсор внутри айтема, то происходит сброс DragMode у QGraphicsView на NoDrag. Попробовал навесить eventFilter и выставлять руками
Код
C++ (Qt)
view->setDragMode(QGraphicsView::ScrollHandDrag)
Не помогает, курсор меняется на "руку", но вид не шевелится. Что за бред на ровном месте.
Нафига неактивный айтем забирает на себя управление и не даёт ничего сделать? Ненавижу Qt Грустный
Записан
iroln
Гость
« Ответ #2 : Май 29, 2012, 16:58 »

Похоже, это мой косяк. Проблема наблюдается только с моей собственной реализацией сцены. Грустный
Записан
mks
Гость
« Ответ #3 : Май 30, 2012, 00:44 »

...
Что хочу:
Хочу таскать мышкой вид над сценой, если курсор находится внутри айтема. Проблема: не тащится. Улыбающийся
То есть, другими словами, если у айтема снят флаг Movable, как сделать его "прозрачным", то есть как заставить Qt его игнорировать, никак не учитывать при таскании внутри вида?
...
Вы хотите таскать сцену только тогда когда курсор внутри вашего серого прямоугольника ? Я с трудом улавливаю ход вашей мысли. Устроит ли такой вариант: левая кнопка мыши таскает объекты по сцене, а правая всю сцену внутри вида ?
Записан
iroln
Гость
« Ответ #4 : Май 30, 2012, 20:51 »

Вы хотите таскать сцену только тогда когда курсор внутри вашего серого прямоугольника ? Я с трудом улавливаю ход вашей мысли. Устроит ли такой вариант: левая кнопка мыши таскает объекты по сцене, а правая всю сцену внутри вида ?
Ход моих мыслей незатейлив. Мне надо было таскать вид над сценой, когда курсор находился где угодно. Я сам накосячил, о чём и написал. В моей унаследованной сцене в методах обработки событий мыши была ошибка, которая отключала DragMode для текущего вида если курсор попадал в область любого айтема. В общем, уже всё нормально, и я посыпаю голову пеплом. Улыбающийся

Кстати ошибка у меня появилась, вследствие того, что я пытался исправить реальный баг Qt, который я зарепортил год назад, но его даже никто не принял.
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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