Ich möchte ein Bild aktivieren QPushButton, und die Größe von QPushButtonsollte von der Größe des Bildes abhängen. Ich kann dies tun, wenn ich es benutze QLabel, aber nicht mit QPushButton.
Wenn jemand eine Lösung hat, helfen Sie mir bitte.
das ist großartig ... es funktioniert gut ... vielen Dank ...
greshi Gupta
Gern geschehen :) Wenn Sie der Meinung sind, dass die Antwort richtig ist, markieren Sie sie bitte als richtig, damit sie für andere hilfreich ist, die ein ähnliches Problem haben.
Naruto
Antworten:
69
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 Größe der Pixmap neu sortieren.
Ich weiß, dass dies alt ist, aber ich habe dies getan, und das Drucktasten-Symbol ist immer noch das Standard-Symbol. Ich erhalte keine Fehler und alle meine Ressourcendateien scheinen geladen zu sein und meine Pfade sind gut. Warum funktioniert das bei mir nicht?
mrg95
46
QPushButton *button = new QPushButton;
button->setIcon(QIcon(":/icons/..."));
button->setIconSize(QSize(65, 65));
Ich glaube nicht, dass Sie Bilder mit beliebiger Größe für eine der vorhandenen Schaltflächenklassen festlegen können. Wenn Sie möchten, dass sich ein einfaches Bild wie eine Schaltfläche verhält, können Sie Ihre eigene QAbstractButton-Unterklasse schreiben, etwa:
Vielen Dank für Ihre Antwort. Helfen Sie mir bitte, indem Sie zeigen, wie ich diesen Code mithilfe von QPushButton anstelle von QAbstractButton implementieren kann. Da meine Anforderungen sind, QPushButton zu verwenden. Also, bitte hilf mir.
Greshi Gupta
Wie gesagt, ich glaube nicht, dass es einen richtigen Weg gibt. Wenn überhaupt, könnten QStyle und Stylesheets hilfreich sein. Schau mal dort hin.
Frank Osterfeld
3
Dies ist alt, aber es ist immer noch nützlich. Vollständig mit QT5.3 getestet.
Seien Sie vorsichtig, Beispiel für den Ressourcenpfad:
In meinem Fall habe ich im Quellverzeichnisprojekt ein Ressourcenverzeichnis mit dem Namen "Ressources" erstellt.
Der Ordner "ressources" enthält Bilder und Symbole. Dann habe ich in Qt ein Präfix "Images" hinzugefügt. So wird der Pixmap-Pfad:
Tun Sie dies mit der Grundeinstellung "Symbol", zumindest um zu sehen, ob es mit Ihrem Bild funktioniert, bevor Sie versuchen, das Symbol pro Status festzulegen. Stellen Sie die Größe des Symbols so ein, dass es der Ihres Bildes entspricht oder zumindest groß genug für Ihr Bild ist. Andernfalls wird es nicht angezeigt.
Beachten Sie Folgendes: "path_to_icon"ist der Pfad des Bildsymbols in der Datei .qrcIhres Projekts. Informationen zum Hinzufügen einer .qrcDatei finden Sie hier
Antworten:
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 Größe der Pixmap neu sortieren.
So etwas sollte funktionieren:
QPixmap pixmap("image_path"); QIcon ButtonIcon(pixmap); button->setIcon(ButtonIcon); button->setIconSize(pixmap.rect().size());
quelle
QPushButton *button = new QPushButton; button->setIcon(QIcon(":/icons/...")); button->setIconSize(QSize(65, 65));
quelle
Möglicherweise möchten Sie auch die Größe der Schaltfläche festlegen.
QPixmap pixmap("image_path"); QIcon ButtonIcon(pixmap); button->setIcon(ButtonIcon); button->setIconSize(pixmap.rect().size()); button->setFixedSize(pixmap.rect().size());
quelle
Sie können auch verwenden:
button.setStyleSheet("qproperty-icon: url(:/path/to/images.png);");
Hinweis : Dies ist ein wenig hacky. Sie sollten dies nur als letzten Ausweg verwenden. Symbole sollten aus
C++
Code oder gesetzt werdenQt Designer
.quelle
Ich glaube nicht, dass Sie Bilder mit beliebiger Größe für eine der vorhandenen Schaltflächenklassen festlegen können. Wenn Sie möchten, dass sich ein einfaches Bild wie eine Schaltfläche verhält, können Sie Ihre eigene QAbstractButton-Unterklasse schreiben, etwa:
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 ); } };
quelle
Dies ist alt, aber es ist immer noch nützlich. Vollständig mit QT5.3 getestet.
Seien Sie vorsichtig, Beispiel für den Ressourcenpfad:
In meinem Fall habe ich im Quellverzeichnisprojekt ein Ressourcenverzeichnis mit dem Namen "Ressources" erstellt.
Der Ordner "ressources" enthält Bilder und Symbole. Dann habe ich in Qt ein Präfix "Images" hinzugefügt. So wird der Pixmap-Pfad:
QPixmap pixmap (": / images / Ressources / icone_pdf.png");
JF
quelle
Sie können dies in QtDesigner tun. Klicken Sie einfach auf Ihre Schaltfläche, gehen Sie zur Symboleigenschaft und wählen Sie dann Ihre Bilddatei aus.
quelle
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. Informationen zum Hinzufügen einer.qrc
Datei finden Sie hierquelle