Ich möchte ein Bild auf QPushButton
setzen, und die Größe von QPushButton
sollte von der Größe des Bildes abhängen. Ich kann dies tun, wenn Sie QLabel
verwenden, aber nicht mit QPushButton
.
Wenn also jemand eine Lösung hat, dann hilf mir bitte.
Sie können eine Pixmap als Symbol verwenden und dieses Symbol dann auf die Schaltfläche setzen.
Um sicherzustellen, dass die Größe der Schaltfläche korrekt ist, müssen Sie das Symbol entsprechend der Pixelgröße anpassen.
So etwas sollte funktionieren:
QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
QPushButton *button = new QPushButton;
button->setIcon(QIcon(":/icons/..."));
button->setIconSize(QSize(65, 65));
Sie können auch die Tastengröße einstellen.
QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
button->setFixedSize(pixmap.rect().size());
Sie können auch verwenden:
button.setStyleSheet("qproperty-icon: url(:/path/to/images.png);");
Hinweis : Dies ist ein bisschen hackig. Sie sollten dies nur als letzten Ausweg verwenden. Icons sollten aus C++
-Code oder Qt Designer
gesetzt werden.
Dies ist alt, aber es ist immer noch nützlich, Vollständig getestet mit QT5.3.
Seien Sie vorsichtig, Beispiel für den Ressourcenpfad:
In meinem Fall habe ich ein Ressourcenverzeichnis mit dem Namen "Ressourcen" im Quellverzeichnisprojekt erstellt.
Der Ordner "Ressourcen" enthält Bilder und Symbole. Dann fügte ich ein Präfix "Bilder" in Qt hinzu.
QPixmap pixmap (":/images/Ressources/icone_pdf.png");
JF
Ich glaube nicht, dass Sie Bilder mit beliebiger Größe für eine der vorhandenen Schaltflächen festlegen können. Wenn Sie ein einfaches Bild wie eine Schaltfläche haben möchten, können Sie Ihre eigene QAbstractButton-Unterklasse schreiben.
class ImageButton : public QAbstractButton {
Q_OBJECT
public:
...
void setPixmap( const QPixmap& pm ) { m_pixmap = pm; update(); }
QSize sizeHint() const { return m_pixmap.size(); }
protected:
void paintEvent( QPaintEvent* e ) {
QPainter p( this );
p.drawPixmap( 0, 0, m_pixmap );
}
};
Sie können dies in QtDesigner tun. Klicken Sie einfach auf die Schaltfläche, wechseln Sie zur Symboleigenschaft und wählen Sie Ihre Bilddatei aus.
Verwenden Sie einfach diesen Code
QPixmap pixmap("path_to_icon");
QIcon iconBack(pixmap);
Beachten Sie Folgendes: "path_to_icon"
ist der Pfad des Bildsymbols in der Datei .qrc
Ihres Projekts. Wie Sie .qrc
-Datei hinzufügen, finden Sie hier .
icon = QtGui.QIcon()
icon.addPixmap(QtGui.QPixmap(":/images/icon.png"), QtGui.QIcon.Normal, QtGui.QIcon.Off)
self.pushButton.setIcon(icon)