如何在QPushButton上设置图像?

gre*_*pta 70 qt

我想设置一个图像QPushButton,其大小QPushButton应取决于图像的大小.我可以在使用时执行此操作QLabel,但不能使用QPushButton.

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

Jér*_*ôme 62

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

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

这样的事情应该有效:

QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
Run Code Online (Sandbox Code Playgroud)

  • 我知道这是旧的,但我已经这样做了,按钮图标仍然是默认图标.我没有错误,我的所有资源文件似乎都被加载,我的路径很好.为什么这对我不起作用? (5认同)

Sha*_*adi 40

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


Jon*_*han 9

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

QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
button->setFixedSize(pixmap.rect().size());
Run Code Online (Sandbox Code Playgroud)


Iul*_*liu 8

您还可以使用:

button.setStyleSheet("qproperty-icon: url(:/path/to/images.png);");
Run Code Online (Sandbox Code Playgroud)

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


Fra*_*eld 6

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


Nem*_*ila 5

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