首页 > 代码库 > QT中文路径测试结果大全及方法

QT中文路径测试结果大全及方法

第一种: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文件跑到哪里了









QT中文路径测试结果大全及方法