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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: QGraphicsItem: обновление курсора при анимации  (Прочитано 4492 раз)
vfilatov
Гость
« : Август 28, 2008, 12:12 »

Привет!
Есть QGraphicsItem, который лежит на QGraphicsScene. Для этого item-а через setCursor() установлен курсор, отличный от курсора по умолчанию. Наводишь мышкой на item - курсор меняется, уводишь с item-а - возвращается обычный. Всё хорошо. Теперь добавляем для этого item-а анимацию. Пусть у нас есть два кадра, которые по таймеру меняют друг друга с определённой периодичностью. Каждый из этих двух кадров имеет одинаковый размер в смысле boundingRect, но разный shape, т.е. у моего QGraphicsItem переопеределена виртуальная функция shape, которая возвращает различные значения для каждого кадра. Теперь допустим, что мы навели мышку на item, курсор поменялся. Но вот кадр меняется и в новом кадре точка, где сейчас находится мышка, не входит в shape. Однако, курсор остаётся таким же, как при наведении на item, что не верно. Стоит только двинуть или кликнуть мышкой, как курсор тут же обновляется на правильный. Вопрос заключается в том, как сделать так, чтобы курсор обновлялся сам при смене кадра. В аналогичной программе (не на Qt) всё работает как надо. Есть ли возможность как-то принудительно обновить курсор?
Записан
deis
Гость
« Ответ #1 : Декабрь 25, 2008, 15:42 »

Такая же фигня происходит в обычной таблице - начинаешь редактировать ячейку, курсор меняется на текстовый, выходишь по esc из ячейки - курсор возращается к прежнему виду только при перемещении за границы собственно таблицы - даже если его менять с помощью setCursor() по сигналу closeEditor...
Записан
BaltikS
Гость
« Ответ #2 : Декабрь 26, 2008, 10:00 »

Да, тоже замечал, курсор иногда не ставится и не возвращается в 5-10% случаев на QGraphicsItem...
По подробнее...
Есть item и есть ещё 6  item-ов, которые обозначают фокус 1-го itemа. При наведенеии на фокус (на один из 6 item-ов) меняется курсор.... Так вот если быстро провести мышью над фокусом, то иногда курсор остаётся таким же как и при наведении на фокус на остальном участке сцены.
« Последнее редактирование: Декабрь 26, 2008, 10:57 от BaltikS » Записан
BRE
Гость
« Ответ #3 : Декабрь 26, 2008, 10:21 »

Автоматическое изменение курсора происходит в обработчике mouseMove QGraphicsViewPrivate.
Можно попробовать в ручную переустанавливать курсор в методе, который меняет кадр, т.е. делать setCursor().
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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