首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Qt 4.7.4 QPropertyAnimation不工作

Qt 4.7.4 QPropertyAnimation不工作
EN

Stack Overflow用户
提问于 2012-10-04 17:21:01
回答 3查看 1.2K关注 0票数 0

我正在尝试在按钮单击事件上设置动画。但不知何故,动画并不起作用。我已经参考了Qt参考文档,但找不到导致问题的根本原因

以下是示例代码:

代码语言:javascript
复制
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();
}

使用上面的实现,单击事件不会发生任何事情。有任何建议,谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-10-04 17:47:08

这样啊,原来是这么回事。我不允许m_AnimatedWidget在屏幕上显示。下面是编辑后的代码片段。

代码语言:javascript
复制
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();
}
票数 0
EN

Stack Overflow用户

发布于 2012-10-04 17:29:29

这看起来是错误的:

代码语言:javascript
复制
TOOLBAR_Y_HIDDEN = -m_AnimatedWidget->height();
m_AnimatedWidget = new AnimatedWidget(this);

首先访问m_AnimatedWidget,然后再分配它?

当您遇到崩溃时,请始终在调试器中运行您的程序。它将帮助您非常容易地找到这个错误,因为它会在错误行上停止。

票数 2
EN

Stack Overflow用户

发布于 2012-10-04 17:42:57

m_ani->setDuration(500);

setDuration()参数以毫秒为单位表示。当你在测试的时候,你可能应该多放半秒。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12724104

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档