Qt中文

用Qt写好了程序,并撰写了中文的语言文件(.qm文件) 后,发布到没有安装过Qt的系统上时,却发现只有固定的界面文字中的中文能正常显示,而程序运行过程中保存到诸如txt、xml文件中的中文却变成了奇怪的编码,而读回时就会变成“?”。
经过研读Qt的文档,总算知道了原因,那是因为对于中文之类的特殊编码文字,Qt系统中是使用相应的TextCodec来进行Unicode到本地编码(GB2312,GB18030等)的转换的,而这个TextCodec并不是静态编译到Qt的几个库文件中的,而是在编译完Qt系统后,以Plugin的形式出现在 /qt/plugins/codecs 目录下,如简体中文的Codec库文件名为:qcncodecs4.dll,而我发布Qt程序时只安装了Qt的几个主文件(QtCore4.dll,QtGui4.dll),所以造成了该系统上缺少中文Codec的问题。
解决方法很简单,有多种方法:
1)将以上的中文编码库文件安装到可执行程序的目录下的 codecs 目录下,程序启动时,QtCore中的初始化过程会自动找到该目录并加载到内存中。
2)在Qt程序启动时,用代码指定Qt的Library搜索路径。
3)编写qt.config文件,放在可执行文件的目录下,并在其中定义Codecs的路径。
4)对于用static编译的Qt,在主程序文件中写上这句宏指令:Q_IMPORT_PLUGIN(qcncodecs),并在Link中加入相应的LIB文件。
具体内容我不多说了,看Qt文档吧: doc/html/plugins-howto.html
另外,Qt的图像解码系统也是用Plugin的方式提供的,如果忘了复制如jpeg,gif之类的解码库的话,程序将只能显示bmp和png的图片了。


本文来自ChinaUnix博客,如果查看原文请点: http://blog.chinaunix.net/u2/82530/showart_1956936.html
### 关于 Qt 框架的中文资料与教程 #### 在线社区与论坛 国内有许多活跃的 Qt 中文社区和论坛,为开发者提供了丰富的学习资源和技术支持。例如,优快云 Qt 论坛作为一个综合性 IT 平台,持续关注 Qt 的发展,并提供了一个技术交流的空间[^1]。用户可以在其中提问、分享学习心得以及获取相关资料。此外,QTCN 开发网是国内最早且最活跃的 Qt 中文社区之一,内容覆盖面广,社区内有众多热心的 Qt 爱好者,能够帮助初学者快速入门。 #### 开源社区与项目 Qter 开源社区致力于推广 Qt 技术,包含大量由社区成员开发的开源项目和作品。同时,该社区还提供了许多高质量的原创教程,这些教程以图文并茂的形式呈现,适合初学者学习。通过参与 Qter 社区的项目或阅读其教程,用户可以更深入地理解 Qt 的实际应用。 #### 推荐书籍 对于希望系统性学习 Qt 的开发者,《C++ GUI Qt 4 编程》是一本非常有价值的参考书。这本书由 Trolltech 提供,作为官方培训教材,全面而深刻地阐述了 Qt 程序的设计理念,适合希望掌握跨平台开发技能的学习者[^3]。此外,由于 Qt 是基于 C++ 的框架,因此掌握 C++ 的基础知识至关重要。《C++ Primer》作为经典的 C++ 教程,涵盖了语言的核心概念和高级特性,是学习 C++ 的必备书籍[^4]。 #### 学习路径建议 考虑到 Qt 框架的复杂性,建议从基础的 C++ 编程知识入手,逐步过渡到 Qt 的具体功能模块。结合在线社区的实践经验与书籍中的理论知识,能够有效提升学习效率。此外,Qt 还支持多种脚本语言(如 Python)的绑定,这意味着用户可以根据自身需求选择不同的开发方式[^2]。 ```python # 示例:使用 PyQt(Python 绑定)创建一个简单的窗口 from PyQt5.QtWidgets import QApplication, QWidget app = QApplication([]) # 创建应用程序实例 window = QWidget() # 创建窗口对象 window.setWindowTitle("Hello PyQt") # 设置窗口标题 window.show() # 显示窗口 app.exec_() # 启动事件循环 ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值