2

内部リソースからの画像を 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でマークされた行を削除すると、エラーは消えます。

何か案は?

4

3 に答える 3

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

またはデザイナーからスタイルシートを変更してください。

于 2013-10-18T10:03:37.250 に答える
0

ui->pushButton_5->setStyleSheet("backgroundimage:url(/home/Desktop/qtproject/sample2/images/11.png);");

Qpushbutton で背景を設定する場合

于 2015-07-01T05:38:35.473 に答える