鱼C论坛

 找回密码
 立即注册
查看: 999|回复: 5

QT中如何加载带中文名的图标?

[复制链接]
发表于 2023-11-20 22:41:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
QT5中带中文名的图标加载不进去,我又不想改名字,怎么解决啊,求前辈赐教
VZ4}TZ{82VW}`L}HO36CRBX.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2023-11-20 22:46:15 | 显示全部楼层
你可以使用QString::fromLocal8Bit()将中文名转换为本地编码,然后使用QIcon加载图标。例如:

  1. QString iconPath = "路径/图标名.png";
  2. QFileIconProvider iconProvider;
  3. QIcon icon = iconProvider.icon(QFileInfo(iconPath));
复制代码


这样就可以加载带有中文名的图标了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-20 23:09:06 | 显示全部楼层
isdkz 发表于 2023-11-20 22:46
你可以使用QString::fromLocal8Bit()将中文名转换为本地编码,然后使用QIcon加载图标。例如:

复制到PRO文件吗
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-20 23:10:51 | 显示全部楼层
isdkz 发表于 2023-11-20 22:46
你可以使用QString::fromLocal8Bit()将中文名转换为本地编码,然后使用QIcon加载图标。例如:

我想添加的是某个文件夹内所有资源(图标),但是这些资源中有些带中文名,
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2023-11-22 08:05:09 | 显示全部楼层
Qt 加载中文无非就解决这两件事:

  1. 路径编码和文件编码。
复制代码


在处理中文路径时,需要确保Qt能够正确解析中文字符。

Qt 5之后的版本已经较好地支持Unicode,所以通常不需要特别的编码转换即可处理中文路径。

以下是一些确保中文路径正确加载的步骤:

1. 确保文件编码:首先确保你的图标文件是以UTF-8或者系统支持的编码方式保存的。

2. 使用Unicode字符串:在代码中处理路径时,使用`QString`对象,它支持Unicode,可以直接处理中文路径。

3. 避免硬编码路径:如果是硬编码的路径,确保源代码文件的保存编码是UTF-8,这样中文字符才不会因为编码问题而出错。

4. 路径转换:如果你从某些非Unicode的环境中获取路径(例如通过命令行参数),可能需要将路径转换为UTF-8或者使用`QString::fromLocal8Bit`等函数进行转换。

5. 使用QIcon:使用`QIcon`类加载图标时,可以直接提供图标的路径。

示例代码:

  1. #include <QApplication>
  2. #include <QWidget>
  3. #include <QIcon>
  4. #include <QPushButton>

  5. int main(int argc, char *argv[])
  6. {
  7.     QApplication app(argc, argv);

  8.     // 假设中文名图标路径为 "icons/图标.png"
  9.     QString iconPath = QString::fromUtf8("icons/图标.png");
  10.    
  11.     // 创建一个窗口
  12.     QWidget window;
  13.     window.setWindowIcon(QIcon(iconPath)); // 设置窗口图标

  14.     // 创建一个按钮,使用中文图标
  15.     QPushButton button(&window);
  16.     button.setIcon(QIcon(iconPath)); // 设置按钮图标
  17.     button.setIconSize(QSize(64, 64)); // 设置图标显示大小
  18.     button.show();

  19.     window.show();
  20.     return app.exec();
  21. }
复制代码


在上面的代码中,QString::fromUtf8

用来确保字符串是以UTF-8编码解析的。

如果你的源文件编码是UTF-8,并且你的环境正确支持UTF-8,通常情况下你可以直接写:

  1. QString iconPath = "icons/图标.png"
复制代码

而不需要使用 fromUtf8。

如果你在加载中文路径时遇到问题,那可能是你的开发环境或者文件系统不是使用UTF-8或者相应的Unicode编码。

在这种情况下,需要根据你的操作系统和文件系统的实际情况来做适当的编码转换。Qt 加载中文无非就解决这两件事:

  1. 路径编码和文件编码。
复制代码


在处理中文路径时,需要确保Qt能够正确解析中文字符。

Qt 5之后的版本已经较好地支持Unicode,所以通常不需要特别的编码转换即可处理中文路径。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2023-11-23 14:22:15 | 显示全部楼层
不二如是 发表于 2023-11-22 08:05
Qt 加载中文无非就解决这两件事:

这个是用代码单独加入,需要的是添加资源时批量加入
但是我另外建一个文件夹又能成功加入,就是这个文件夹加入不了,百思不得其解,应该是QT的BUG
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-28 13:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表