第一种:windows下最常用最有效,直接使用国标码
#include <QTextCodec>
.....
QString fileName = QFileDialog::getOpenFileName(this,QString("读取匹配原图"),QString("E:\\"),QString("*.jpg *.bmp *.png"));
if(fileName.isEmpty())
{
QMessageBox::warning(this,QString("warning"),QString("No image was selected!"));
return;
}
QTextCodec *code = QTextCodec::codecForName("gb2312");
std::string name = code->fromUnicode(fileName).data();
验证失败
方法二:QStringLiteral 这个函数QT5.7不认 失败
方法三:直接使用
//设置ToolButton图像
// QString pathname="D://高度程序//image//1.png";
// QTextCodec *code = QTextCodec::codecForName("gb18030");
// std::string name = code->fromUnicode(pathname.toUtf8()).data(); // pathname 为QString的中文路径名
用下下面一句话可以解决问题 路径全部中文 包括文件名
QString fileName= QString::fromLocal8Bit("E:\\游戏动画\\兔子\\兔子2\\兔子.png");
// QTextCodec *code = QTextCodec:: codecForName("gb18030"); 这个不需要
SetBtnImage(m_pBtn1,fileName );
SetBtnImage(m_pBtn2,":/image/2.png");
SetBtnImage(m_pBtn3,":/image/3.png");
SetBtnImage(m_pBtn4,":/image/4.png");
SetBtnImage(m_pBtnAnima,":/image/animation.png");
测试结果:OK
打开文件对话框中文路径测试j结果:OK
总结:QT5.7 完全支持中文路径 中文文件名;
编辑器编码 系统编码 随便换都没有问题 挨着测试GBK GB2312 GB18030 UTF-8 任意编码都可以加载中文路径
并不是网上所言的那些方法。所以我们必须重新认识QT
测试中发现QT输出路径有时不是可靠 ,可能会输出到以前打开的项目里,如果调试正常,而在自己工程目录下没有EXE文件,查看运行输出目录可以找到你的EXE文件跑到哪里了
时间: 2024-10-05 05:21:13