Как установить продолжительность анимации Qt QStateMachine - PullRequest
0 голосов
/ 23 апреля 2011

Я пытаюсь изучить фреймворк Qt.Мой код QStateMachine работает правильно (нажатие кнопки изменяет размер всплывающего окна чата).Я не могу изменить скорость анимации, чтобы получить хороший визуальный переход.Есть предложения?

Вот код:

MainWindow::MainWindow()
{
   widget.setupUi( this );

   // chat window - Chat button opens
   ChatWindowClosedState = new QState();
   ChatWindowOpenState = new QState();

   ChatWindowOpenGeometry = widget.groupBox->geometry();
   ChatWindowClosedGeometry = widget.pushButton->geometry();
   ChatWindowClosedGeometry.translate( -ChatWindowClosedGeometry.width(), 0 );

   ChatWindowClosedState->assignProperty( widget.groupBox, "geometry", ChatWindowClosedGeometry );
   ChatWindowOpenState->assignProperty( widget.groupBox, "geometry", ChatWindowOpenGeometry );

   ChatWindowCloseTransition = ChatWindowClosedState->addTransition( widget.pushButton, SIGNAL( clicked() ), ChatWindowOpenState );
   ChatWindowCloseAnimation = new QPropertyAnimation( widget.pushButton, "geometry" );
   ChatWindowCloseAnimation->setDuration( 5000 );
   ChatWindowCloseTransition->addAnimation( ChatWindowCloseAnimation );

   ChatWindowOpenTransition = ChatWindowOpenState->addTransition( widget.pushButton, SIGNAL( clicked() ), ChatWindowClosedState );
   ChatWindowOpenAnimation = new QPropertyAnimation( widget.pushButton, "geometry" );
   ChatWindowOpenAnimation->setDuration( 5000 );
   ChatWindowOpenTransition->addAnimation( ChatWindowOpenAnimation );

   machine = new QStateMachine( this );
   machine->addState( ChatWindowClosedState );
   machine->addState( ChatWindowOpenState );
   machine->setInitialState( ChatWindowClosedState );
   machine->start();
}

1 Ответ

0 голосов
/ 05 мая 2011

Код

ChatWindowOpenAnimation = new QPropertyAnimation( widget.pushButton, "geometry" );

должен быть

ChatWindowOpenAnimation = new QPropertyAnimation( widget.groupBox, "geometry" );

Анимация была применена к неправильному виджету.

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