2011-04-23 5 views
0

Qt 프레임 워크를 배우려고합니다. 내 QStateMachine 코드가 올바른 작업을 수행합니다 (버튼을 누르면 채팅 창이 팝업 크기로 바뀝니다). 좋은 시각적 전환 효과를 얻기 위해 애니메이션의 속도를 변경할 수 없습니다. 제안 사항이 있으십니까?Qt QStateMachine 애니메이션 길이를 설정하는 방법

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

이 애니메이션은 잘못된 위젯에 적용되고 있었다

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

해야

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(); 
} 

답변

0

코드 :

여기에 코드입니다.

관련 문제