Chcę włączyć obraz QPushButton, a rozmiar QPushButtonpowinien zależeć od rozmiaru obrazu. Jestem w stanie to zrobić podczas używania QLabel, ale nie z QPushButton.
to świetnie ... działa dobrze .. wielkie dzięki ...
greshi Gupta
Serdecznie witamy :) Jeśli uważasz, że odpowiedź jest prawidłowa, zaznacz ją jako właściwą, aby była pomocna dla innych osób, które mają podobny problem.
Naruto
Odpowiedzi:
69
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.
Wiem, że to jest stare, ale zrobiłem to, a ikona przycisku jest nadal domyślna. Nie pojawiają się żadne błędy i wydaje się, że wszystkie moje pliki zasobów są załadowane, a ścieżki są prawidłowe. Dlaczego to nie działa dla mnie?
mrg95,
46
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:
Dziękuję za odpowiedź… Czy pomożesz mi, pokazując, jak mogę zaimplementować ten kod za pomocą QPushButton zamiast QAbstractButton. Ponieważ moje wymagania to użycie QPushButton. więc proszę, pomóż mi.
greshi Gupta
Jak powiedziałem, nie sądzę, aby istniał właściwy sposób. Jeśli w ogóle, pomocne mogą być QStyle i arkusze stylów. Zajrzyj tam.
Frank Osterfeld
3
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ę:
Zrób to z podstawowym ustawieniem `` ikony '', przynajmniej po to, aby zobaczyć, jak działa z twoim obrazem, zanim spróbujesz ustawić ikonę według stanu. Ustaw rozmiar ikony tak, aby odpowiadał rozmiarowi obrazu lub przynajmniej był wystarczająco duży, aby obraz nie był wyświetlany.
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());
źródło
QPushButton *button = new QPushButton; button->setIcon(QIcon(":/icons/...")); button->setIconSize(QSize(65, 65));
źródło
Możesz także ustawić rozmiar przycisku.
QPixmap pixmap("image_path"); QIcon ButtonIcon(pixmap); button->setIcon(ButtonIcon); button->setIconSize(pixmap.rect().size()); button->setFixedSize(pixmap.rect().size());
źródło
Możesz także użyć:
button.setStyleSheet("qproperty-icon: url(:/path/to/images.png);");
Uwaga : to trochę hakerskie. Powinieneś używać tego tylko w ostateczności. Ikony należy ustawić z
C++
kodu lubQt Designer
.źródło
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 ); } };
źródło
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
źródło
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.
źródło
Po prostu użyj tego kodu
QPixmap pixmap("path_to_icon"); QIcon iconBack(pixmap);
Zwróć uwagę, że:
"path_to_icon"
to ścieżka do ikony obrazu w pliku.qrc
twojego projektu. Możesz dowiedzieć się, jak dodać.qrc
plik tutajźródło