QtushButton的Qt背景图像

时间:2013-10-18 09:24:18

标签: c++ qt background-image qpixmap qpushbutton

我需要将内部资源中的图像作为QPushButton的背景图像。我还需要调整图像的大小到按钮的大小。 我发现here有一些方法可以做到这一点,但似乎没有任何效果。 在上一个回复中,建议使用以下代码:

QPixmap pixmap("image.jpg");
QPalette palette;    
QPushButton *button= new QPushButton(this);
palette.setBrush(button->backgroundRole(), QBrush(pixmap));
button->setFlat(true);
button->setAutoFillBackground(true);    
button->setPalette(palette);

所以我拿了那段代码并稍微改了一下因为我使用的是用QTCreator制作的ui:

void MyDialog::SetBgImage(QWidget *pButton)
{
    QPixmap pixmap(":/Icons/images/Sfondo.png");
    QPalette palette = pButton->palette();
    palette.setBrush(pButton->backgroundRole(), QBrush(pixmap)); // 1
    QPushButton *pPButton = qobject_cast<QPushButton *>(pButton);
    if (pPButton!=NULL)
           pPButton->setFlat(true);
    pButton->setAutoFillBackground(true);
   pButton->setPalette(palette); // 2

}

在构造函数中,我以这种方式调用它:

SetBgImage(ui->pushButton_Button1);

显示对话框时,按钮显示正确。不幸的是,当我关闭对话框时,我收到以下错误消息:

  

*检测到glibc * ./MyAppName:malloc():内存损坏:0x0047dc78 ***

如果我删除标有 // 1 的行或标有 // 2 的行,则错误消失。

有什么想法吗?

2 个答案:

答案 0 :(得分:5)

button->setStyleSheet("border-image:url(:/Icons/images/Sfondo.png);");

或者从设计师处更改样式表。

答案 1 :(得分:0)

UI-&GT; pushButton_5-&GT; setStyleSheet(&#34;和backgroundImage:网址(/家/桌面/ qtproject / SAMPLE2 /图片 /11.png);&#34);

用于在Qpushbutton中设置背景