如何在QPushButton上设置图像?


81

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

因此,如果有人有解决方案,请帮帮我。


2
您可以通过两种方式在Qt中的按钮上设置图像,通过编程方式设置图像,qt-articles.blogspot.com / 2010/06 /…从样式表中如何设置图像,qt-articles。 blogspot.com/2010/06/…–
火影忍者

多数民众赞成在伟大...它的工作正常..非常感谢...
greshi Gupta

非常欢迎您的到来:)如果您认为答案是正确的,请标记为正确,这样对遇到类似问题的其他人会有所帮助。
火影忍者

Answers:


69

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

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

这样的事情应该工作:

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

6
我知道这已经很老了,但是我已经做到了,按钮图标仍然是默认按钮。我没有收到任何错误,所有资源文件似乎都已加载,并且路径也很好。为什么这对我不起作用?
mrg95


10

您可能还需要设置按钮的大小。

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

9

您还可以使用:

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

注意:这有点hacky。您只能将此作为最后的手段。图标应通过C++代码或设置Qt Designer


4

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

感谢您的答复..请您演示如何使用QPushButton而不是QAbstractButton来实现此代码,以帮助我。由于我的要求是使用QPushButton。因此,请帮助我。
greshi Gupta,2010年

正如我所说,我认为没有适当的方法。如果有的话,QStyle和样式表可能会有所帮助。在那里看看。
Frank Osterfeld 2010年

3

这是旧的,但仍然有用,已通过QT5.3全面测试。

要小心,关于资源路径的例子:

就我而言,我在源目录项目中创建了一个名为“ Ressources”的资源目录。

“资源”文件夹包含图片和图标。然后我在Qt中添加了前缀“图像”,因此像素映射路径变为:

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

JF


答案应该提供更多信息如何将QPixmap与QPushButton结合使用
bunto1

2

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


在尝试按状态设置图标之前,请使用基本的“图标”设置执行此操作,至少可以看到它与您的图像配合使用。将图标的大小设置为图像的大小,或者至少足以容纳图像,否则将不显示。
ClearCrescendo

0

只需使用此代码

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

注意:"path_to_icon".qrc项目文件中图像图标的路径。您可以在此处找到如何添加.qrc文件

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.