如何在Qt中动态更改QPushButton的背景图像?

时间:2013-11-11 13:49:20

标签: qt qwidget qpushbutton

我有一个包含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中的文本,并且该更改会立即发生。有什么意见吗?

1 个答案:

答案 0 :(得分:0)

您应该可以使用样式表更改背景:

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的语法是否正确。或资源的路径是正确的..