我试图在按钮点击事件上创建动画。但不知何故,动画无效。我已经参考了Qt参考文档,但找不到导致问题的根本原因
以下是示例代码:
void MainWindow::AnimationClick()
{
// define toolbar y movement positions for animation
TOOLBAR_Y_SHOWN = 0;
TOOLBAR_Y_HIDDEN = -m_AnimatedWidget->height();
m_AnimatedWidget = new AnimatedWidget(this);
QPropertyAnimation *m_ani = new QPropertyAnimation(m_AnimatedWidget, "pos", this);
m_ani->setDuration(500);
m_ani->setEndValue(QPoint(m_AnimatedWidget->pos().x(), TOOLBAR_Y_HIDDEN));
m_ani->setEasingCurve(QEasingCurve::InBack);
m_ani->start();
}
通过上述实现,click事件不会发生任何事情。 任何建议,谢谢。
答案 0 :(得分:2)
这看起来不对:
TOOLBAR_Y_HIDDEN = -m_AnimatedWidget->height();
m_AnimatedWidget = new AnimatedWidget(this);
首先您访问m_AnimatedWidget
然后分配它?
当您遇到崩溃(例如分段错误)时,请始终在调试器中运行程序。它会帮助你很容易地发现这个错误,因为它会在错误的行上停止。
答案 1 :(得分:0)
m_ani->setDuration(500);
setDuration()
参数以毫秒表示。在测试时,您应该放置超过半秒钟。
答案 2 :(得分:0)
我明白了。我不允许m_AnimatedWidget显示在屏幕上。 以下是已编辑的代码段。
void MainWindow::AnimationClick()
{
// define toolbar y movement positions for animation
TOOLBAR_Y_SHOWN = 0;
m_AnimatedWidget = new AnimatedWidget(this);
TOOLBAR_Y_HIDDEN = -m_AnimatedWidget->height();
QPropertyAnimation *m_ani = new QPropertyAnimation(m_AnimatedWidget, "pos", this);
m_ani->setDuration(5000);
m_ani->setEndValue(QPoint(m_AnimatedWidget->pos().x(), TOOLBAR_Y_HIDDEN));
m_ani->setEasingCurve(QEasingCurve::InBack);
m_ani->start();
m_AnimatedWidget->show();
}