Chcę włączyć obraz QPushButton
, a rozmiar QPushButton
powinien zależeć od rozmiaru obrazu. Jestem w stanie to zrobić podczas używania QLabel
, ale nie z QPushButton
.
Więc jeśli ktoś ma rozwiązanie, pomóż mi.
Chcę włączyć obraz QPushButton
, a rozmiar QPushButton
powinien zależeć od rozmiaru obrazu. Jestem w stanie to zrobić podczas używania QLabel
, ale nie z QPushButton
.
Więc jeśli ktoś ma rozwiązanie, pomóż mi.
Odpowiedzi:
Możesz użyć piksmapy jako ikony, a następnie umieścić tę ikonę na przycisku.
Aby mieć pewność, że rozmiar przycisku będzie prawidłowy, należy ponownie wyrównać ikonę zgodnie z rozmiarem piksmapy.
Coś takiego powinno działać:
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));
Nie sądzę, aby można było ustawić obrazy o dowolnych rozmiarach na żadnej z istniejących klas przycisków. Jeśli chcesz, aby prosty obraz zachowywał się jak przycisk, możesz napisać własną podklasę QAbstractButton, na przykład:
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 );
}
};
To jest stare, ale nadal przydatne, w pełni przetestowane z QT5.3.
Bądź ostrożny, przykład dotyczący ścieżki zasobów:
W moim przypadku utworzyłem katalog zasobów o nazwie „Ressources” w projekcie katalogu źródłowego.
Folder „ressources” zawiera obrazy i ikony. Następnie dodałem przedrostek „Images” w Qt, więc ścieżka do pixmapy stała się:
QPixmap pixmap (": / images / Ressources / icone_pdf.png");
JF
Możesz to zrobić w QtDesigner. Wystarczy kliknąć przycisk, a następnie przejść do właściwości ikony, a następnie wybrać plik obrazu.