首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > QT开发 >

Qt中QImage.load()如何加载中文文件名的图片

2012-07-31 
Qt中QImage.load()怎么加载中文文件名的图片?先获取指定目录下的文件名(这个文件名已经包含了这个指定目录

Qt中QImage.load()怎么加载中文文件名的图片?
先获取指定目录下的文件名(这个文件名已经包含了这个指定目录)

  QList <QString> picturelistbiao;

  filters<<"*.jpg"<<"*.png"<<"*.bmp"<<"*.gif";
  QDirIterator iter("/home/sql/picture",filters,dir.filter(), QDirIterator::Subdirectories);
  int im=0;
  while (iter.hasNext()) {
  iter.next();
  QFileInfo info = iter.fileInfo();
  if (info.isFile()) {
  QString name;
  name=QString("%1. %2").arg(im+1).arg(info.baseName());
  ui->listWidget->addItem(name);
  picturelistbiao.append(info.filePath());
  im++;
  }
  }
  int picturenum=ui->listWidget->count();

然后根据文件名加载显示图片

  picturem++;
  QByteArray ba=picturelistbiao[picturem].toLatin1();
  na=ba.data();

  image.load(na);********************
  pixmap=QPixmap::fromImage(image.scaled(size(),Qt::KeepAspectRatio));
  spixmap=pixmap.scaled(780,370,Qt::KeepAspectRatio);
  ui->label->setPixmap(spixmap);


如果文件名不含中文字符,就正常。含有中文字符的时候图片就显示不了了,提示
QImage::scaled: Image is a null image
QPixmap::scaled: Pixmap is a null pixmap

帮忙解决一下!!谢谢


[解决办法]
1楼+1
编码问题,找不到相应的路径。。。

你可以到网上搜一下“Qt中怎样支持中文”,最经典的就是三句话,写上就ok啦
[解决办法]
我把楼上的三句话写出来,混积分的。。
QTextCodec *codec = QTextCodec::codecForName("UTF-8"); //获取系统编码
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
不过图片文件最好不要用中文,目录也最好不要用中文。如果你的软件是用来发行的,要不以后会陆续出现一些问题的,比如打补丁包的时候,中文的文件名处理就比英文的麻烦。

热点排行