Qt中QImage.load()怎么加载中文文件名的图片?

sqlfd 2012-07-13 01:10:46
先获取指定目录下的文件名(这个文件名已经包含了这个指定目录)

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

帮忙解决一下!!谢谢
...全文
1498 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
sqlfd 2012-07-13
  • 打赏
  • 举报
回复
OK!!!解决!!!!!谢谢
xiebin133 2012-07-13
  • 打赏
  • 举报
回复 1
我把楼上的三句话写出来,混积分的。。
QTextCodec *codec = QTextCodec::codecForName("UTF-8"); //获取系统编码
QTextCodec::setCodecForLocale(codec);
QTextCodec::setCodecForCStrings(codec);
QTextCodec::setCodecForTr(codec);
不过图片文件最好不要用中文,目录也最好不要用中文。如果你的软件是用来发行的,要不以后会陆续出现一些问题的,比如打补丁包的时候,中文的文件名处理就比英文的麻烦。
addfourliu 2012-07-13
  • 打赏
  • 举报
回复
1楼+1
编码问题,找不到相应的路径。。。

你可以到网上搜一下“Qt中怎样支持中文”,最经典的就是三句话,写上就ok啦
sqlfd 2012-07-13
  • 打赏
  • 举报
回复
刚刚接触Qt对编码不懂,详细点
healer_kx 2012-07-13
  • 打赏
  • 举报
回复
那还是编码的问题,统一用UTF8处理。

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧