Qt Animation: Появляющиеся и исчезающие объекты - PullRequest
2 голосов
/ 06 января 2010

Я пишу приложение для аннотирования видео с помощью Qt4, в котором пользователи должны иметь возможность искать различные точки в видео, размещать маркеры на различных объектах и ​​затем устанавливать ключевые точки для этих маркеров, чтобы они оставались на объектах в видео, как они двигаются. QGraphicsItemAnimation кажется отличным местом для запуска этих маркеров, однако они должны иметь возможность появляться и исчезать в определенное время, что я не могу понять, как это сделать с QGraphicsItemAnimation. Я мог бы установить масштаб на 0, чтобы объекты исчезли, но это выглядит довольно хакерским решением, и я предполагаю, что движок рисования все равно будет тратить циклы процессора, пытаясь нарисовать эти невидимые объекты. У кого-нибудь есть лучшее решение, чем это? Я сейчас использую Qt 4.5.3, но я готов перейти на 4.6, если это облегчит задачу. Спасибо!!

1 Ответ

1 голос
/ 06 января 2010

Кажется, что функциональность, которую вы хотите показать / скрыть QGraphicsItem объектов, выходит за рамки простого "анимации движения" , который выполняет класс анимации. Это только для одного объекта за раз, и любое появление или исчезновение вы должны написать сами.

Вы все еще могли бы получить некоторый пробег из QGraphicsItemAnimation (хотя тот факт, что он использует свой собственный таймер вместо того, чтобы быть привязанным к частоте кадров вашего видео, является немного хитрым).

Пренебрегая «поиском» на мгновение, появляется сигнал QTimeLine :: законченный () . Если вы позволите концу активной временной шкалы анимации аннотации представлять точку, где вы хотите, чтобы она исчезла, вы можете вызвать QGraphicsItem :: hide () в этой точке. Когда придет время включить его, вы создадите новый QGraphicsItemAnimation (основанный на следующем запуске данных ключевого кадра для этого объекта) и вызовете QGraphicsItem :: show () .

Обратите внимание, что одной из главных особенностей Qt 4.6 является структура QtAnimation , которая является более сложной, но также довольно сложной. Я еще не использовал его, но просматривая примеры , кажется, что вы можете "анимировать" свойство видимости или непрозрачности.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...