如何在Qt4中为小部件透明度设置动画?

时间:2010-10-14 07:14:47

标签: qt qt4

我需要为小部件透明度设置动画。 在我看来,我应该使用QPropertyAnimation。但我怎么能定义小部件半透明?我应该使用like this吗?

2 个答案:

答案 0 :(得分:8)

根据我至少玩过的内容,你的问题有两个子答案:

  1. 如果要为QWidget顶层窗口设置不透明度的动画,可以在“windowOpacity”值上使用0到1的QPropertyAnimation。您可能想要检查确切的语法,因为我正在使用PyQt。
  2. 如果要为按钮或文本标签的不透明度设置动画,则此属性将不起作用,您需要使用QGraphicsWidgets。它们继承了QGraphicsItem,因此它们具有opacity。不幸的是,这意味着使用代理窗口小部件QGrapgicsProxyWidget来保持正常窗口小部件与其图形窗口小部件同步,因为QGraphicsWidget不继承QWidget。要了解更多信息,请查看Animation Framework Examples,特别是状态机,了解如何使用代理小部件。
  3. windowOpacity动画:

    QPropertyAnimation animate = new QPropertyAnimation(this, "windowOpacity", this);

    animate.setDuration(100); animate.setStartValue(1); animate.setEndValue(0); animate.start();

    这仅适用于支持某种Composite扩展的系统。

    希望它有所帮助!

答案 1 :(得分:0)

您可以尝试使用QWidget中的windowOpacity属性。如果这不起作用,您可能需要定义自己的属性并在小部件的paint事件中使用它。