QPushButton 的 Qt 背景图像

新手上路,请多包涵

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

 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 的行,错误就会消失。

有任何想法吗?

原文由 Rudy Barbieri 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答
button->setStyleSheet("border-image:url(:/Icons/images/Sfondo.png);");

或者从设计师那里改变样式表。

原文由 patriotyk 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题