Мне нужно поместить изображение из внутренних ресурсов в качестве фонового изображения 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:
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 ошибка исчезнет.
Есть идеи?
button->setStyleSheet("border-image:url(:/Icons/images/Sfondo.png);");
Или измените таблицу стилей от дизайнера.
ui-> pushButton_5-> setStyleSheet ( «BackgroundImage: URL (/ дом / Desktop / qtproject /
sample2 / изображения
/11.png); «);
Для настройки фона в Qpushbutton