qt - Qt动画工具按钮

  显示原文与译文双语对照的内容
0 0

我尝试使用QPropertyAnimation制作工具按钮的动画。 但是,它什么也没有做。是否有什么我做错了? 有谁可以帮助?

ToolBarPalettes.h:


class ToolBarPalettes : public QToolBar
{
 public:
 ToolBarPalettes(void);
 ~ToolBarPalettes(void);

 public slots:
 void startAnimation();

 private:
 createButtons();
 QToolButton *animatedButton;
}

ToolBarPalettes.cpp:


ToolBarPalettes::ToolBarPalettes(void)
{
 createButtons();
 connect(animatedButton, SIGNAL(clicked()), this, SLOT(startAnimation()));
}

void ToolBarPalettes::createButtons()
{
 animatedButton = new QToolButton;
 animatedButton->setText("Animate!");
 addWidget(animatedButton);
}

void ToolBarPalettes::startAnimation()
{
 QPropertyAnimation *animation = new QPropertyAnimation(animatedButton,"geometry");
 animation->setDuration(3000);
 animation->setStartValue(QRect(this->x(), this->y(), this->width(), this->height()));
 animation->setEndValue(QRect(this->x(), this->y(), 10, 10));
 animation->setEasingCurve::OutBounce);
 animation->start(QAbstractAnimation::DeleteWhenStopped);
}

时间: 原作者:

0 0

你应该使用 minimumSizemaximumSize 或者 size 属性而不是 geometry 属性。


animation = new QPropertyAnimation(animatedButton,"minimumSize"); 

然后设置值:


animation->setStartValue(animatedButton->minimumSize());
animation->setEndValue(QSize(100,100));

geometry 属性只适用于顶级 Windows,而小部件的内容不包含在布局中。

原作者:
...