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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: Не работает анимация.  (Прочитано 2591 раз)
alexman
Гость
« : Март 09, 2011, 18:06 »

Заюзал state machine и при клике на кнопку должна отработать анимация на изменение размеров окна, но не работает. Что не так делаю Непонимающий Вот код:
Код:
#include <QtCore/QDebug>
#include <QtCore/QPropertyAnimation>
#include <QtCore/QSignalTransition>
#include <QtCore/QStateMachine>
#include <QtGui/QApplication>
#include <QtGui/QLayout>
#include <QtGui/QPushButton>

int main( int argc, char** argv )
{
QApplication app( argc, argv );

QWidget view;

QPushButton* button = new QPushButton( &view );

QHBoxLayout* layout = new QHBoxLayout;
layout->addWidget( button );

view.setLayout( layout );

app.setActiveWindow( &view );
view.show();

QStateMachine* stateMachine = new QStateMachine();

QState* hideState = new QState();
hideState->assignProperty( button, "text", "Show" );

QState* showState = new QState();
showState->assignProperty( button, "text", "Hide" );

QPropertyAnimation* showAnimation = new QPropertyAnimation( &view, "size" );
showAnimation->setDuration( 10000 );
showAnimation->setStartValue( QSize( 200, 30 ) );
showAnimation->setEndValue( QSize( 400, 30 ) );

QSignalTransition* showTransition = new QSignalTransition();
showTransition->addAnimation( showAnimation );

hideState->addTransition( showTransition );
hideState->addTransition( button, SIGNAL( clicked() ), showState );

showState->addTransition( button, SIGNAL( clicked() ), hideState );

stateMachine->addState( hideState );
stateMachine->addState( showState );

stateMachine->setInitialState( hideState );
stateMachine->start();
return app.exec();
}
Записан
meego_man
Гость
« Ответ #1 : Март 09, 2011, 18:43 »

Так будет правильнее

Код:
#include <QtCore/QDebug>
#include <QtCore/QPropertyAnimation>
#include <QtCore/QSignalTransition>
#include <QtCore/QStateMachine>
#include <QtGui/QApplication>
#include <QtGui/QLayout>
#include <QtGui/QPushButton>

int main( int argc, char** argv )
{
  QApplication app( argc, argv );

  QWidget view;

  QPushButton* button = new QPushButton( &view );

  QHBoxLayout* layout = new QHBoxLayout;
  layout->addWidget( button );

  view.setLayout( layout );

  app.setActiveWindow( &view );
  view.show();

  QStateMachine* stateMachine = new QStateMachine();

  QState* hideState = new QState();
  hideState->assignProperty( button, "text", "Show" );
  hideState->assignProperty( &view, "size", QSize (200, 30));

  QState* showState = new QState();
  showState->assignProperty( button, "text", "Hide" );
  showState->assignProperty(&view, "size", QSize (400, 30));

  QPropertyAnimation* showAnimation = new QPropertyAnimation(&view, "size" );
  showAnimation->setDuration( 1000 );

  QSignalTransition* hideTransition = hideState->addTransition( button, SIGNAL( clicked() ), showState );
  hideTransition->addAnimation ( showAnimation );
  QSignalTransition* showTransition = showState->addTransition( button, SIGNAL( clicked() ), hideState );
  showTransition->addAnimation ( showAnimation );

  stateMachine->addState( hideState );
  stateMachine->addState( showState );

  stateMachine->setInitialState( hideState );
  stateMachine->start();
  return app.exec();
}

Записан
alexman
Гость
« Ответ #2 : Март 09, 2011, 18:44 »

Спасибо! Надо было срочно Улыбающийся
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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