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);