如何在QPushButton上设置图像?

问题描述 投票:66回答:8

我想在QPushButton上设置一个图像,QPushButton的大小应该取决于图像的大小。我在使用QLabel时可以做到这一点,但不能用QPushButton

所以,如果有人有解决方案,那么请帮助我。

qt
8个回答
59
投票

您可以做的是使用像素图作为图标,然后将此图标放在按钮上。

要确保按钮的大小正确,您必须根据像素图大小调整图标大小。

这样的事情应该有效:

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

37
投票
QPushButton *button = new QPushButton;
button->setIcon(QIcon(":/icons/..."));
button->setIconSize(QSize(65, 65));

9
投票

您可能还想设置按钮大小。

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

7
投票

您还可以使用:

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

注意:这有点hacky。你应该只使用它作为最后的手段。图标应该从C++代码或Qt Designer设置。


2
投票

我不认为你可以在任何现有的按钮类上设置任意大小的图像。如果你想要一个像按钮一样的简单图像,你可以编写自己的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 );
    }
};

2
投票

这是旧的但它仍然有用,使用QT5.3进行了全面测试。

小心,有关资源路径的示例:

在我的例子中,我在源目录项目中创建了一个名为“Resources”的资源目录。

文件夹“ressources”包含图片和图标。然后我在Qt中添加了前缀“Images”,因此pixmap路径变为:

QPixmap pixmap(“:/ images / Resources / icone_pdf.png”);

JF


0
投票

您可以在Qt Designer中执行此操作。只需单击您的按钮,然后转到图标属性,然后选择您的图像文件。


0
投票

只需使用此代码

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

请注意:"path_to_icon"是项目文件.qrc中图像图标的路径您可以找到如何添加.qrc文件here

© www.soinside.com 2019 - 2024. All rights reserved.