(Qt C++) QPushButton setIcon() 不工作
Posted
技术标签:
【中文标题】(Qt C++) QPushButton setIcon() 不工作【英文标题】:(Qt C++) QPushButton setIcon() not working 【发布时间】:2013-07-14 00:35:54 【问题描述】:我正在处理一个项目,该项目在一组中有 40 个可检查按钮,我希望一个按钮的图标根据我定义的值进行更改。我没有创建新按钮,只是更改当前按钮的图标。所以我尝试改变一个按钮的图标来测试它。
这是我当前的代码:
QPixmap b1d0(":/textures/blocks/textures/blocks/stone.png");
QIcon ButtonIcon(b1d0);
ui->slot_0->setIcon(ButtonIcon);
ui->slot_0->setIconSize(b1d0.rect().size());
资源路径是直接从我的资源文件中复制的,所以它是正确的,我把它搞砸了,但没有改变所以......
slot_0 是我的按钮。
我做错了什么?或者更好的是,我什至可以更改现有按钮的图标吗?
感谢您的宝贵时间:)
【问题讨论】:
检查b1d0.isNull()
是否返回true
。如果是这样,那么它没有找到图像文件或无法读取它。
有趣。是的,但是我直接从资源文件中复制了路径?我会继续搞砸的。
所以我直接在我的 C: 驱动器上更改了图片文件的路径。它保持为空。你认为我不能将 png 放入像素图或其他东西中吗?
尝试使用其他图像文件。还要检查QFile::exists("...")
的返回。
您使用的是哪个编译器?在 MSVC 上,您需要将 Q_INIT_RESOURCE(res);
添加到 main()
的开头,其中 res 是 .qrc 文件的名称(没有 .qrc)。使用 GCC,它就可以工作。
【参考方案1】:
如果您在 Windows 上使用 MSVC 作为编译器,并且想使用 Qt 的资源系统,则需要添加
Q_INIT_RESOURCE(res)
到main()
的开头,其中 res 是不带“.qrc”的 .qrc 文件的名称。
要全面了解这一点,请查看以下要点:
https://gist.github.com/alexreinking/5992821
【讨论】:
以上是关于(Qt C++) QPushButton setIcon() 不工作的主要内容,如果未能解决你的问题,请参考以下文章