2736946915 发表于 2023-11-20 22:41:06

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

QT5中带中文名的图标加载不进去,我又不想改名字,怎么解决啊,求前辈赐教

isdkz 发表于 2023-11-20 22:46:15

你可以使用QString::fromLocal8Bit()将中文名转换为本地编码,然后使用QIcon加载图标。例如:

QString iconPath = "路径/图标名.png";
QFileIconProvider iconProvider;
QIcon icon = iconProvider.icon(QFileInfo(iconPath));


这样就可以加载带有中文名的图标了。

2736946915 发表于 2023-11-20 23:09:06

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




复制到PRO文件吗

2736946915 发表于 2023-11-20 23:10:51

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




我想添加的是某个文件夹内所有资源(图标),但是这些资源中有些带中文名,

不二如是 发表于 2023-11-22 08:05:09

Qt 加载中文无非就解决这两件事:

路径编码和文件编码。

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

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

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

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

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

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

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

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

示例代码:

#include <QApplication>
#include <QWidget>
#include <QIcon>
#include <QPushButton>

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);

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

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

    window.show();
    return app.exec();
}

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

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

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

QString iconPath = "icons/图标.png"
而不需要使用 fromUtf8。

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

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

路径编码和文件编码。

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

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

2736946915 发表于 2023-11-23 14:22:15

不二如是 发表于 2023-11-22 08:05
Qt 加载中文无非就解决这两件事:




这个是用代码单独加入,需要的是添加资源时批量加入
但是我另外建一个文件夹又能成功加入,就是这个文件夹加入不了,百思不得其解,应该是QT的BUG
页: [1]
查看完整版本: QT中如何加载带中文名的图标?