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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: [РЕШЕНО] Как таскать сцену, если курсор внутри айтема?  (Прочитано 3338 раз)
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.029 секунд. Запросов: 18.