然后QFiledialog没有' DontUseNativeDialog'发生凌乱的代码

时间:2014-12-03 11:49:02

标签: qt unicode internationalization codec

我在CentOS 7上构建了一个QT项目。我已将/etc/locale.conf更改为' zh_CN.gb2312'。

当我打开QFiledialog时没有' DontUseNativeDialog'要选择一个文件,文件名在对话框中显示乱​​码,甚至我在main()中添加以下代码:

QTextCodec::setCodecForTr(QTextCodec::codecForName("GB2312"));  
QTextCodec::setCodecForLocale(QTextCodec::codecForName("GB2312"));  
QTextCodec::setCodecForCStrings(QTextCodec::codecForName("GB2312"));  

如何解决这个问题? 我的应用程序不仅支持英语或中文,还应该与linux中的所有语言兼容。 QT必须能自动检查系统语言,但如何?

谢谢。

1 个答案:

答案 0 :(得分:0)

这可能是秘密:
 当我在UTF-8环境中并命名文件时,文件名以utf-8样式存储。当我改为CGB2312环境时,utf-8在GB2312中由glibc解释,因此凌乱的代码出现了。凌乱的代码在QT QFiledialog中不是没有,但在bshel​​l中也是如此。 QT原生GUI窗口和bshel​​l都基于glibc,对吗?

可能是gnome特别对待它,它足够聪明地解释文件名的编码,因此在gnome文件浏览工具包中,名称显示在UTF-8和GB2312环境下。