我正在尝试在按钮单击事件上设置动画。但不知何故,动画并不起作用。我已经参考了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();
}使用上面的实现,单击事件不会发生任何事情。有任何建议,谢谢。
发布于 2012-10-04 17:47:08
这样啊,原来是这么回事。我不允许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();
}发布于 2012-10-04 17:29:29
这看起来是错误的:
TOOLBAR_Y_HIDDEN = -m_AnimatedWidget->height();
m_AnimatedWidget = new AnimatedWidget(this);首先访问m_AnimatedWidget,然后再分配它?
当您遇到崩溃时,请始终在调试器中运行您的程序。它将帮助您非常容易地找到这个错误,因为它会在错误行上停止。
发布于 2012-10-04 17:42:57
m_ani->setDuration(500);
setDuration()参数以毫秒为单位表示。当你在测试的时候,你可能应该多放半秒。
https://stackoverflow.com/questions/12724104
复制相似问题