(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() 不工作的主要内容,如果未能解决你的问题,请参考以下文章

Qt——Qt控件之按钮-QPushButton下压按钮控件的使用总结(使用两个按钮分别控制主窗体不同颜色变化)

Qt - 获取 QPushButton 图标名称

QT分析之QPushButton的初始化

[Qt入门] QPushButton创建

在 C++ 中的 Qt 中向 UI 动态添加未知数量的按钮

Qt之QPushButton