繁体   English   中英

如何设置Qt QStateMachine动画持续时间

[英]How to set Qt QStateMachine animation duration

我正在尝试学习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();
}

编码

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

应该

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

动画被应用于错误的小部件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM