Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/neo4j/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 如何在QPushButton上设置图像?_Qt - Fatal编程技术网

Qt 如何在QPushButton上设置图像?

Qt 如何在QPushButton上设置图像?,qt,Qt,我想在QPushButton上设置一个图像,而QPushButton的大小应该取决于图像的大小。我可以在使用QLabel时执行此操作,但不能使用QPushButton 因此,如果有人有解决方案,那么请帮助我。我认为您不能在任何现有按钮类上设置任意大小的图像。 如果您想要一个像按钮一样的简单图像,您可以编写自己的QAbstractButton子类,比如: class ImageButton : public QAbstractButton { Q_OBJECT public: ... vo

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


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

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

你可以做的是使用一个pixmap作为一个图标,然后把这个图标放到按钮上

为了确保按钮的大小正确,您必须根据pixmap大小重新调整图标

像这样的方法应该会奏效:

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

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

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

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

保持谨慎,关于资源路径的示例:

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

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

QPixmap pixmap(:/images/resources/icone_pdf.png”)

JF

您还可以使用:

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

注意:这有点粗糙。你应该把这当作最后的手段。图标应该从
C++
code或
Qt设计器设置

您可以在Qt设计器中进行设置。只需单击按钮,然后转到图标属性,然后选择图像文件。

只需使用此代码即可

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

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

谢谢回答。。你能帮我演示一下如何使用QPushButton而不是QAbstractButton来实现这段代码吗。因为我的要求是使用QPushButton。所以,请帮帮我。正如我说的,我认为没有合适的方法。如果有的话,QStyle和样式表可能会有所帮助。看看那里。有两种方法可以用来在Qt中设置按钮上的图像,一种是设置图像的编程方式,从样式表中可以看到图像是如何设置的,这很好……它工作得很好……非常感谢……非常欢迎:)如果你觉得答案是正确的,请将其标记为正确,以便对其他遇到类似问题的人有所帮助。我知道这是旧的,但我已经这样做了,按钮图标仍然是默认的。我没有收到任何错误,我的所有资源文件似乎都已加载,路径也很好。为什么这对我不起作用?答案应该提供更多信息,如何将QPixmap与QpushButton一起使用基本的“图标”设置,至少可以看到它与图像一起工作,然后再尝试设置每个状态的图标。将图标的大小设置为图像的大小,或者至少设置为足以容纳图像的大小,否则它将无法显示。
QPixmap pixmap("path_to_icon");
QIcon iconBack(pixmap);