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

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

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: как сделать анимацию  (Прочитано 12207 раз)
muaddib1981@mail.ru
Гость
« : Ноябрь 06, 2009, 11:43 »

как сделать отображение перемещения объекта

Код не дает желаемого результата
Код:
QMainWindow *wnd1;
QMainWindow *wnd2;

for (i=0;i<100;i++)
{
  wnd1->wnd2->setPos(x+i,y+j); //Изменение параметров прорисовываемого объекта
  Sleep(100);
  wnd2->update();
};
Похоже потому, что update не выполняется сразу, а накапливается в очереди событий.
И вся очередь событий выполняется при выходе из функции, но как же тогда быть?
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #1 : Ноябрь 06, 2009, 11:49 »

Заменить update на repaint
Записан
muaddib1981@mail.ru
Гость
« Ответ #2 : Ноябрь 06, 2009, 11:58 »

Большое спасибо, сам бы мог догадаться!  Веселый
Записан
jasf
Гость
« Ответ #3 : Ноябрь 09, 2009, 21:41 »

что ж Вы в прошлом веке то сидите, когда есть такой замечательный фреймворк, как QStateMachine? Улыбающийся
Записан
muaddib1981@mail.ru
Гость
« Ответ #4 : Ноябрь 10, 2009, 11:22 »

а что это?
Записан
jasf
Гость
« Ответ #5 : Ноябрь 10, 2009, 11:27 »

http://www.youtube.com/results?search_query=QStateMachine&search_type=&aq=f например Улыбающийся
но выгуглить можно ещё кучу всего. При этом программируется очень легко (настройкой свойств) в несколько строк кода. Примеров в SDK так же хватает (qt\examples\animation; qt\examples\statemachine);

P.S. QStateMachine введена в Qt 4.6.
« Последнее редактирование: Ноябрь 10, 2009, 11:30 от jasf » Записан
muaddib1981@mail.ru
Гость
« Ответ #6 : Ноябрь 10, 2009, 11:36 »

да крутая штучка, только вот qt 4.6 не вышел еще
Записан
jasf
Гость
« Ответ #7 : Ноябрь 10, 2009, 11:39 »

как это не вышел? ещё в марте можно было скачать образ Qt с QStateMachine. А бетки и technical preview ещё летом повыходили.
« Последнее редактирование: Ноябрь 10, 2009, 11:48 от jasf » Записан
muaddib1981@mail.ru
Гость
« Ответ #8 : Ноябрь 10, 2009, 11:48 »

на сайте qt.nokia.com, официально выложен только 4.5, 4.6 видимо еще бета.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #9 : Ноябрь 10, 2009, 11:51 »

там слева внизу ссылка на бинарные сборки под все ОСи. Директ линк: http://qt.nokia.com/developer/qt-4.6-preview Она глючная пока, но терпимо, для разработки как раз сойдет.
Записан
jasf
Гость
« Ответ #10 : Ноябрь 10, 2009, 11:53 »

2muaddib1981@mail.ru:
Вот неверю что при использовании Qt 4.6 SDK вы найдёте хоть одну вещь, которой нету в Qt 4.5 или которая работает хуже, чем в Qt 4.5, или такую, которая не работает так, как нужно конкретно вам, и которая работает в Qt 4.5. Имхо technical preview это как раз не unstable release, который не рекомендуется использовать, а именно недоработанная версия будущего релиза. Т.е. фактически Qt 4.6 но без некоторых фич, которые будут в Qt 4.6. Но, по всей видимости, уже того функционала, который есть на сегодняшний день, вашим требованиям более чем достаточно Улыбающийся
« Последнее редактирование: Ноябрь 10, 2009, 11:56 от jasf » Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #11 : Ноябрь 10, 2009, 12:00 »

ну у меня на маке стабильно не прорисовывает нижний скроллбар в Ассистанте во вьюхе.
И почему-то модель моя хоть убей не хочет дропать url извне (как будто text/urls или как он там зовется не назначен. Под 4.5 было ок все, под виндой 4.5 также работает)
Записан
jasf
Гость
« Ответ #12 : Ноябрь 10, 2009, 12:02 »

2Авварон: ну я подразумевал именно релиз под Windows. Так то я скачал бетку под Symbian - глючит по страшному Улыбающийся Но по умолчанию, вследствии зомбирования мозга виндой подразумевал именно её. А там багов за первое время использования так и не обнаружил.
Записан
Авварон
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 3260


Просмотр профиля
« Ответ #13 : Ноябрь 10, 2009, 12:48 »

кстати вопрос, чтобы не создавать лишнюю. Как анимации дружат с лайаутами? То есть если я хочу плавно переместить виджеты и по другому - как мне это сделать?
Записан
jasf
Гость
« Ответ #14 : Ноябрь 10, 2009, 14:31 »

2Авварон: Отвечу так: можно (скачай Qt 4.6 и посмотри animation example).
и немного доп. инфы:
QState изменяют Q_PROPERTY а не конкретно QLayout или QWidget. Я создал собственный QAnimRectangle : public QObject, задефайнил там Q_PROPERTY (геометрию, полупрозрачность, там различная трансформация), ну и подключил обьект к QState. При каждом изменении вызывается сигнал QState::polished. Подключил к этому сигналу слот QWidget::update, и получил полностью свой класс (квадратик) с различной анимацией. Мегаудобно. В QLayout имеются:

    Q_PROPERTY(int margin READ margin WRITE setMargin)
    Q_PROPERTY(int spacing READ spacing WRITE setSpacing)
    Q_PROPERTY(SizeConstraint sizeConstraint READ sizeConstraint WRITE setSizeConstraint)

соответственно можно оперировать этими 3мя величинами. А больше ничего другого изменить и не нужно. В QWidget, кроме всего прочего, есть:


    Q_PROPERTY(QRect geometry READ geometry WRITE setGeometry)

т.е. если ты через QState будешь изменять geometry, QWidget будет автоматически оповещать лайоут, ну и всё будет происходить как положено.

а если чего не хватает, можно дописать свои Q_PROPERTY. QState работает через мета-информацию, поэтому может работать с любым QObject и изменять практически любую величину (оперируется QVariantом)
« Последнее редактирование: Ноябрь 10, 2009, 14:34 от jasf » Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


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