Как установить изображение на QPushButton?

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

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

Ответ 1

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

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

Что-то вроде этого должно работать:

QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());

Ответ 2

QPushbutton *button = new QPushbutton;
button->setIcon(QIcon("<imagePath>"));
button->setIconSize(QSize(65,65));

Ответ 3

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

QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
button->setFixedSize(pixmap.rect().size());

Ответ 4

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

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

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

Ответ 5

Я не думаю, что вы можете устанавливать изображения произвольного размера в любом из существующих классов кнопок. Если вы хотите, чтобы простое изображение выглядело как кнопка, вы можете написать свой собственный подкласс 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 );
    }
};

Ответ 6

Это старый, но он по-прежнему полезен, Полностью протестирован с QT5.3.

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

В моем случае я создал каталог ressources с именем "Ressources" в проекте исходного каталога.

В папке "ressources" содержатся изображения и значки. Затем я добавил префикс "Изображения" в Qt. Таким образом, путь pixmap станет:

QPixmap pixmap ( ":/images/Ressources/icone_pdf.png" );

JF

Ответ 7

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

Ответ 8

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

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

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