如何在qt中为QPushButton的背景颜色设置动画?

Posted

技术标签:

【中文标题】如何在qt中为QPushButton的背景颜色设置动画?【英文标题】:How to animate the background color of a QPushButton in qt? 【发布时间】:2016-06-13 10:15:02 【问题描述】:

我做了所有 [直到我知道的] 来为按钮的背景颜色设置动画,但我做不到。这是我的尝试之一:

    # I set the style of the button by setstylesheet()
    animation = QPropertyAnimation(btn, "style",btn)
    animation.setDuration(1000)
    animation.setStartValue(QStyle("background-color:blue"))
    animation.setEndValue(QStyle("background-color:red"))
    animation.start()

但是下面的代码显示如下错误:

animation.setStartValue(QStyle("background-color:blue")) TypeError: PyQt4.QtGui.QStyle 代表C++抽象类,无法实例化

我也试过设置调色板:

    color = install_btn.palette()
    color.setColor(QPalette.Base,QColor(72, 152, 219))
    install_btn.setAutoFillBackground(True)
    install_btn.setPalette(color)

然后我在上面的动画值中写了QColor(r,g,b),而不是QStyle,但这也没有用,它说:

QPropertyAnimation:您正在尝试为 QObject 的不存在的属性样式设置动画

请用您知道的任何语言(C++ 或 Python)帮助我。但我使用 Python。

感谢是特别的

【问题讨论】:

QStyle 是抽象基类,无法实例化。您还为调色板使用了错误的背景颜色。你应该改用QPalette.Button 【参考方案1】:

C++,Qt5,但可能在 Qt4 中工作

QGraphicsColorizeEffect *eEffect= new QGraphicsColorizeEffect(btn);
btn->setGraphicsEffect(eEffect);
QPropertyAnimation *paAnimation = new QPropertyAnimation(eEffect,"color");
paAnimation->setStartValue(QColor(Qt::blue));
paAnimation->setEndValue(QColor(Qt::red));
paAnimation->setDuration(1000);
paAnimation->start();

【讨论】:

谢谢,但它不起作用:(即使没有错误。颜色已更改但其中没有动画。您的代码中是否缺少某些内容? @AhmadTaha 我认为您在将代码转换为 python 时出错了。 不,我没有,没有错误+我懂一点c++ 我只是更改了 rgb 中的 QColor @AhmadTaha 在不改变颜色的情况下尝试示例

以上是关于如何在qt中为QPushButton的背景颜色设置动画?的主要内容,如果未能解决你的问题,请参考以下文章

qt中如何修改按钮的背景颜色?

如何设置QPushButton背景透明样式如QLabel

Qt之使用QSS设置QPushButton图标和文本的位置

Qt之使用QSS设置QPushButton图标和文本的位置

如何使用 QPalette 自定义 Qpushbutton 上的文本?

Qt如何给一个button,悬浮 按下设置不同的背景图