如何在QPushButton上设置图像?

时间:2010-06-29 04:12:41

标签: qt

我想在QPushButton上设置图片,QPushButton的尺寸应取决于图片的尺寸。我可以在使用QLabel时执行此操作,但不能使用QPushButton

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

8 个答案:

答案 0 :(得分:59)

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

要确保按钮的大小正确,您必须根据像素图大小重新设置图标。

这样的事情应该有效:

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

答案 1 :(得分:37)

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

答案 2 :(得分:9)

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

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

答案 3 :(得分:7)

您也可以使用:

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

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

答案 4 :(得分: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 );
    }
};

答案 5 :(得分:2)

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

关于资源路径的例子:

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

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

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

JF

答案 6 :(得分:0)

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

答案 7 :(得分:0)

只需使用此代码

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

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