我有一个包含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
中的文本,并且该更改会立即发生。有什么意见吗?
答案 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的语法是否正确。或资源的路径是正确的..