2010-06-29 109 views
58

我想在QPushButton上设置图像,而QPushButton的尺寸应该取决于图像的大小。我能够在使用QLabel时执行此操作,但不能使用QPushButton如何在QPushButton上设置图像?

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

+1

也有使用,你可以设置在Qt的一个按钮,设置图像,HTTP的 编程方式的图像有两种方式:// QT -articles.blogspot.com/2010/06/how-to-customize-button-in-qt.html从样式表如何设置图像,http://qt-articles.blogspot.com/2010/06/如何添加样式表的按钮在qt.html – Naruto 2010-06-30 05:18:29

+0

多数民众赞成在伟大的...它工作正常..感谢很多... – 2010-07-01 03:54:23

+0

你是最欢迎:) 如果你觉得答案是正确的,请将其标记为正确,这样对其他获得类似问题的人会有所帮助。 – Naruto 2010-07-01 12:19:35

回答

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); 
    } 
}; 
+0

感谢您的回答..你会plz帮助我通过显示如何通过使用QPushButton而不是QAbstractButton实现此代码。 由于我的要求是使用QPushButton。 所以,plz帮助我。 – 2010-06-29 11:37:58

+0

正如我所说,我不认为有一个正确的方法。如果有的话,QStyle和样式表可能会有所帮助。看看那里。 – 2010-06-29 22:54:13

+0

谢谢,回答。 – 2010-06-30 05:05:02

51

你可以做的是使用一个像素映射为一个图标,然后把这个图标到按钮。

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

像这样的东西应该工作:

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

我知道这是旧的,但我已经做到了这一点,而按钮图标仍然是默认的。我没有收到任何错误,我的所有资源文件似乎都已加载,我的路径也不错。为什么这不适合我? – mrg95 2013-07-14 00:03:54

32
QPushbutton *button = new QPushbutton; 
button->setIcon(QIcon("<imagePath>")); 
button->setIconSize(QSize(65,65)); 
9

你也可能要设置按钮的大小。

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

这是旧的,但它仍然有用, 完全用QT5.3测试。

要carreful,关于ressources路径例如:

在我来说,我创建了项目源目录中名为“Ressources”一个服务目录。

文件夹 “ressources” 包含图片和icons.Then我加入Qt的那么一个前缀 “图像” 的像素映射路径成为:

QPixmap的像素图( “:/图片/ Ressources/icone_pdf.png”) ;

JF

6

您还可以使用:

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

:这是一个小哈克。你应该只用作最后的手段。图标应设置为C++代码或Qt Designer

0

你可以在QtDesigner中做到这一点。只需点击你的按钮,然后去图标属性,然后选择你的图像文件。

0

只需使用此代码

的QPixmap像素图( “path_to_icon”);
QIcon iconBack(pixmap);

需要注意的是:“path_to_icon”是图像图标的文件的路径。QRC项目的
你可以找到如何添加.qrc文件here