Как установить изображение на QPushButton? - PullRequest
66 голосов
/ 29 июня 2010

Я хочу установить изображение на QPushButton, а размер QPushButton должен зависеть от размера изображения.Я могу сделать это при использовании QLabel, но не с QPushButton.

Так что, если у кого-то есть решение, пожалуйста, помогите мне.

Ответы [ 8 ]

59 голосов
/ 30 июня 2010

Что вы можете сделать, это использовать растровое изображение в качестве значка, а затем поместить этот значок на кнопку.

Чтобы убедиться, что размер кнопки будет правильным, вы должны изменить размер значка в соответствии с размером растрового изображения.

Как-то так должно работать:

QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
38 голосов
/ 09 октября 2012
QPushButton *button = new QPushButton;
button->setIcon(QIcon(":/icons/..."));
button->setIconSize(QSize(65, 65));
9 голосов
/ 21 августа 2014

Вы также можете установить размер кнопки.

QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
button->setFixedSize(pixmap.rect().size());
7 голосов
/ 23 января 2015

Вы также можете использовать:

button.setStyleSheet("qproperty-icon: url(:/path/to/images.png);");

Примечание : Это немного смешно.Вы должны использовать это только в качестве последнего средства.Значки должны быть установлены из C++ кода или Qt Designer.

3 голосов
/ 04 ноября 2014

Это старый, но все еще полезный, полностью протестированный с QT5.3.

Будьте осторожны, пример относительно пути к ресурсам:

В моем случае ясоздал каталог ресурсов с именем «Ресурсы» в проекте исходного каталога.

Папка «Ресурсы» содержит рисунки и значки. Затем я добавил префикс «Изображения» в Qt, поэтому путь к растровому изображению становится следующим:

растровое изображение QPixmap (": / images / Ressources / icone_pdf.png");

JF

2 голосов
/ 29 июня 2010

Я не думаю, что вы можете установить изображения произвольного размера на любой из существующих классов кнопок. Если вам нужно простое изображение, похожее на кнопку, вы можете написать свой собственный подкласс QAbstractButton, например:

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 );
    }
};
0 голосов
/ 17 февраля 2017

Просто используйте этот код

QPixmap pixmap("path_to_icon");
QIcon iconBack(pixmap);

Обратите внимание, что: "path_to_icon" - это путь к значку изображения в файле .qrc вашего проекта. Вы можете найти, как добавить .qrc file здесь

0 голосов
/ 07 сентября 2016

Вы можете сделать это в QtDesigner.Просто нажмите на кнопку, затем перейдите в свойство icon и выберите файл изображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...