Название: [РЕШЕНО] Мерцание при анимации Отправлено: borkk от Апрель 19, 2013, 11:38 Добрый день!
Разработал свой класс ArrowWidget (на основе QWidget), состоящий из нескольких стрелок (направленных вверх или вниз). При нажатии на кнопку стрелки должны либо начать анимацию, либо закончить (в зависимости от нажатой кнопки), рисую при помощи QPainter-а, массивом полигонов (QPolygon), анимация реализована при помощи QPropertyAnimation. Обнаружил проблему, если эти стрелочки отрисовывать в виджете QWidget или просто в окне MainWindow, то при анимации мерцает нижняя стрелка, причем мерцание начинается только после повторного нажатия на клавишу анимации. Видео с примером по ссылке http://youtu.be/3gHhM-3yAeA (http://youtu.be/3gHhM-3yAeA) Решил проблему при помощи Graphics View Framework, создал сцену (QGraphicsScene), вид (QGraphicsView), вид сделал родительским для экземпляра ArrowWidget (экземпляр называется myWidget) и добавил этот экземпляр на сцену. Теперь при нажатии клавиш анимации мерцания не возникает. Соответственно вопрос, корректно ли решение? Есть ли другие варианты? А то мне кажется, что это как из пушки по воробьям... ArrowWidget описание класса Код: class ArrowWidget : public QWidget ArrowWidget конструктор и методы Код: ArrowWidget::ArrowWidget(QWidget *parent) : QWidget(parent) MainWindow.h Код: class MainWindow : public QMainWindow MainWindow.cpp Код: MainWindow::MainWindow(QWidget *parent) : архив с проектом во вложении Название: Re: Мерцание при анимации Отправлено: Bepec от Апрель 19, 2013, 12:03 Такое чуйство, что у вас идёт двойная перерисовка или двойной вызов анимации. В результате чего оно и дёргается.
Код не смотрел, нет времени :) Название: Re: Мерцание при анимации Отправлено: borkk от Апрель 19, 2013, 12:09 при нажатии на клавишу вызывается метод
Код: animation->stop(); Код: animation->start(); Название: Re: Мерцание при анимации Отправлено: Bepec от Апрель 19, 2013, 12:15 Возможно в выходные посмотрю. А мб кто нибудь решит раньше.
Название: Re: Мерцание при анимации Отправлено: Bepec от Апрель 22, 2013, 13:58 Никаких артефактов наподобие тех, что в вашем видео не обнаружил. спокойно всё ковыляет.
Название: Re: Мерцание при анимации Отправлено: borkk от Апрель 23, 2013, 13:09 Ага, как только убрал массив динамической длины стало нормально отображаться)
Вот так вот временное становится постоянным и мешает разработке. Спасибо! Название: Re: Мерцание при анимации Отправлено: Bepec от Апрель 23, 2013, 13:24 Вы ещё подумайте, если это у вас используется вне сцены, мб стоит просто отрисовывать и не загромождать свои программы ещё и сценами?
PS на каждый элемент по сцене - это ж ппц будет. Название: Re: Мерцание при анимации Отправлено: borkk от Апрель 23, 2013, 13:38 Нет, у меня мерцало при анимации без сцены, когда я отрисовывал массив, именно поэтому добавил сцену (см. первый пост, написал, что победил проблему, но кажется, что это как из пушки по воробьям). Сейчас убрал сцены и вид и просто создаю QPolygon и рисую им в цикле
Код: QPolygon arrows; Название: Re: [РЕШЕНО] Мерцание при анимации Отправлено: Bepec от Апрель 23, 2013, 13:54 Слава богу. :)
|