如何在QPushButton上设置图像?
我想在QPushButton
上设置图像,而QPushButton
的尺寸应该取决于图像的大小。我能够在使用QLabel
时执行此操作,但不能使用QPushButton
。如何在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);
}
};
感谢您的回答..你会plz帮助我通过显示如何通过使用QPushButton而不是QAbstractButton实现此代码。 由于我的要求是使用QPushButton。 所以,plz帮助我。 – 2010-06-29 11:37:58
正如我所说,我不认为有一个正确的方法。如果有的话,QStyle和样式表可能会有所帮助。看看那里。 – 2010-06-29 22:54:13
谢谢,回答。 – 2010-06-30 05:05:02
你可以做的是使用一个像素映射为一个图标,然后把这个图标到按钮。
要确保按钮的大小是正确的,您必须根据像素大小重新调整图标。
像这样的东西应该工作:
QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
我知道这是旧的,但我已经做到了这一点,而按钮图标仍然是默认的。我没有收到任何错误,我的所有资源文件似乎都已加载,我的路径也不错。为什么这不适合我? – mrg95 2013-07-14 00:03:54
QPushbutton *button = new QPushbutton;
button->setIcon(QIcon("<imagePath>"));
button->setIconSize(QSize(65,65));
你也可能要设置按钮的大小。
QPixmap pixmap("image_path");
QIcon ButtonIcon(pixmap);
button->setIcon(ButtonIcon);
button->setIconSize(pixmap.rect().size());
button->setFixedSize(pixmap.rect().size());
这是旧的,但它仍然有用, 完全用QT5.3测试。
要carreful,关于ressources路径例如:
在我来说,我创建了项目源目录中名为“Ressources”一个服务目录。
文件夹 “ressources” 包含图片和icons.Then我加入Qt的那么一个前缀 “图像” 的像素映射路径成为:
QPixmap的像素图( “:/图片/ Ressources/icone_pdf.png”) ;
JF
您还可以使用:
button.setStyleSheet("qproperty-icon: url(:/path/to/images.png);");
注:这是一个小哈克。你应该只用作最后的手段。图标应设置为C++
代码或Qt Designer
。
你可以在QtDesigner中做到这一点。只需点击你的按钮,然后去图标属性,然后选择你的图像文件。
只需使用此代码
的QPixmap像素图( “path_to_icon”);
QIcon iconBack(pixmap);
需要注意的是:“path_to_icon”是图像图标的文件的路径。QRC项目的
你可以找到如何添加.qrc文件here
也有使用,你可以设置在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
多数民众赞成在伟大的...它工作正常..感谢很多... – 2010-07-01 03:54:23
你是最欢迎:) 如果你觉得答案是正确的,请将其标记为正确,这样对其他获得类似问题的人会有所帮助。 – Naruto 2010-07-01 12:19:35