1

我有一个包含各种其他小部件的 QWidget。我想通过从上到下逐渐显示它来动画它出现在屏幕上,将它的高度从 0 增加到它的自然高度。

我目前的方式是:

mAnimation = new QPropertyAnimation(this, "maximumHeight");
mAnimation->setStartValue(0);
mAnimation->setEndValue(400);
mAnimation->start();  

这有两个问题: - 当高度达到某个高度时它会崩溃,并出现“qDrawShadeRect:无效参数”错误。- 如果我将 0 更改为 100,它可以正常工作,但是我正在制作动画的 QWidget 中包含的小部件的布局会随着小部件的动画而改变,开始时非常挤压在一起,并随着它们获得更多空间而逐渐散开。这看起来很难看!

有没有人有什么建议?

4

2 回答 2

1

对于第二个问题,我建议将小部件内的所有内容包装在另一个具有固定大小的小部件中。由于小部件的剪辑,这意味着小部件将在动画时显示完整大小的小部件的一部分。

于 2010-06-10T19:34:32.307 回答
0

对于崩溃,我建议获取堆栈跟踪,并假设问题不在您的代码中,将其报告为 bug

第二,与其在你想要的不同大小的地方精确地渲染小部件,不如按照你希望它被看到的方式渲染它。例如:

  • 使用带有两个项目的 QStackWidget:实际的小部件和所需的小部件
  • 所需的小部件实际上只是一个QWidget::render()到您希望小部件看起来像的像素图。
  • 对于动画,显示预渲染的小部件,然后在达到目标大小后切换。
于 2010-06-10T23:29:46.833 回答