【问题标题】:(Qt C++) QPushButton setIcon() not working(Qt C++) QPushButton setIcon() 不工作
【发布时间】: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,它就可以工作。

标签: c++ qt icons qpushbutton


【解决方案1】:

如果您在 Windows 上使用 MSVC 作为编译器,并且想使用 Qt 的资源系统,则需要添加

Q_INIT_RESOURCE(res)

main() 的开头,其中 res 是不带“.qrc”的 .qrc 文件的名称。

要全面了解这一点,请查看以下要点:

https://gist.github.com/alexreinking/5992821

【讨论】:

    猜你喜欢
    • 2023-03-25
    • 2010-12-26
    • 1970-01-01
    • 2020-11-03
    • 1970-01-01
    • 2012-05-22
    • 2023-04-07
    • 2018-09-23
    • 2016-04-14
    相关资源
    最近更新 更多