【问题标题】:How can i dynamically change the background image of a QPushButton in Qt?如何在 Qt 中动态更改 QPushButton 的背景图像?
【发布时间】:2015-07-16 15:23:53
【问题描述】:

我有一个包含QPushButton 的 QWidget,我想更改其中的图像而不重绘整个窗口。

我试过了:

ui->btnIcon->setProperty("highlighted", bIcon);
style()->polish(ui->btnIcon);

在 .qss 文件中:

QPushButton#btnIcon[highlighted=true]{
background-image: url(:/gui/res/Icon1.png);
}

QPushButton#btnIcon[highlighted=false]{
background-image: url(:/gui/res/Icon2.png);
}

它有效,但我必须等待一段时间才能进行更改,并且我还更改了 QLabel 中的文本,并且该更改立即发生。有意见吗?

【问题讨论】:

    标签: qt qwidget qpushbutton


    【解决方案1】:

    您应该能够使用样式表更改背景:

    ui.yourButton->setStyleSheet("QPushButton{ background-image: url('blabla.jpg')}");
    

    立即生效。

    这是我的代码,它可以完成工作:

    Widget::Widget(QWidget *parent) :
        QWidget(parent),
        ui(new Ui::Widget),
        isOn_(true)
    {
        ui->setupUi(this);
        ui->pushButton->setStyleSheet("QPushButton {background-image: url(':blabla1.png')}");
        QObject::connect(ui->pushButton,SIGNAL(clicked()),this,SLOT(changeBack()));
    }
    
    Widget::~Widget()
    {
        delete ui;
    }
    
    void Widget::changeBack(){
    
        if(isOn_)
        {
            ui->pushButton->setStyleSheet(" QPushButton {background-image: url(':blabla.gif')}");
        } else {
            ui->pushButton->setStyleSheet("QPushButton { background-image: url(':blabla1.png')}");
        }
        isOn_ = !isOn_;
    }
    

    检查您的 CSS 语法是否正确。或者你的资源路径是正确的..

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-07-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多