设置自定义图标

3

我在尝试给QToolButton添加一个自定义图标时遇到了困难。 我有一个资源文件(在.pro文件中的RESOURCES下): myResourceFile.qrc 包含以下内容:

/images
ICON_TEST.png

和代码

dragButton = new QToolButton(this);
QString resourcePath = ":/images/ICON_TEST.png";
QPixmap pixIcon(resourcePath); //THE LINE THAT GIVES THE ERROR!
dragButton->setIcon(QIcon(pixIcon));

我遇到了错误: 没有找到 QPixmap(QString &) 的匹配项。
我该如何将正确的路径传递给 QPixmap 对象,然后将对象传递给 setIcon()?
编辑: 刚刚确认 .png 文件存在并被 Qt 识别:
File exists - true   ":/images/ICON_TEST.png" 

使用:

 qDebug()<<"File exists -"<<QFileInfo(":/images/ICON_TEST.png").exists()<<" "<<
              QFileInfo(":/images/ICON_TEST.png").absoluteFilePath();

编辑并附上解决方案:下面是答案

问题仍然存在,为什么会出现这种情况?变量pixIcon在该类的.h文件中声明为:

QPixmap pixIcon;

并在构造函数中分配一个值:

 pixIcon(resourcePath);

对我来说,这似乎是几乎等同于在一行中完成它。

这是在Windows Vista上使用Qt Creator 2.0时的情况。


QPixmap有一个带有QString参数的构造函数,所以你确定你已经包含了所有的头文件吗? - spiritwolfform
刚刚检查了一下,甚至在.cpp文件中添加了#include <QPixmap>(尽管它已经在正确的.h文件中),但我仍然收到这个错误。我还检查了文档,它有接受QString& + 2个带有默认值参数的函数重载,因此在我看来传递QString应该是足够的。 - Stanislaw T
请提供更多的代码,特别是出错的那一行。为了测试QToolButton是否可以改变图标,请尝试执行dragButton->setIcon(QApplication::style()->standardIcon(QStyle::SP_DirIcon).pixmap(128,128));。图标应该会更改为目录的图标。 - Shf
你的Qt版本是多少?如果你在Linux上,你是否安装了所有必要的软件包? - otisonoza
1
请在您的问题答案中发布解决方案并接受它,否则该问题将被标记为未回答。 - Daniel Hedberg
1个回答

1

由于某种原因,当一切都在一行中进行时,它按照预期工作:

 dragButton->setIcon(QIcon(QPixmap(resourcePath)));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接