Qt做发布版,解决声音和图片、中文字体乱码问题

Qt发布版配置指南
本文详细介绍了如何在Qt应用程序发布版中正确配置图片、字体及声音资源,确保跨平台兼容性和功能完整性。

前些天做Qt发布版,发现居然不显示图片,后来才发现原来还有图片的库没加!找找吧,去qt的安装包,我装在了F盘,在FF:/QT/qt/plugins,找到了plugins,这里面有个

imageformats是图片的库,里面有jpggif等,你用到那种格式就加那种!加的时候一点过要注意,将imageformats这个文件夹考到你的程序当前文件夹内!并在主函数里加:QApplication::addLibraryPath("./plugins");

这样你的带图片的发布版就做好了!

看一看发布版(一般生成release)一般需要的dll吧!

 

 

 

中文字体发布后都是乱码,解决办法和图片差不多,同上先找到plugins,在找到codecs,在你的程序当前文件夹下创建piugins文件夹,将这codecs文件夹拷到piugins文件夹,并在主函数里加:

QApplication::addLibraryPath("./plugins");

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

(windows是GB2312;linux是GB2312/UTF-8;arm板里用UTF-8,并且要设置字体,一般用wenquanyi)

 

 

 

说完图片,字体,那么声音怎么加呢,看到phonon_backend这个文件夹了吧,这就是声音啊!首先解释下qt的声音吧,在qt中是有两种办法来加声音的,最简单的就是用QSound

QSound a("bomb.wav");

a.    play();

如果用QSound,做发布版是不需要再添加什么的,直接用就行,但是这个QSound貌似不夸平台呢!在linux下不好用!(据说得装nas,我装了也不好使!而且arm板也不能装!)所以就得用phonon,这个phonon还是很纠结的,有时间我会单讲它的,因为在qt4.5之前貌似没有这个库,而且在交叉编译时,默认也是没有phonon,加上它,编译就会出好多问题!还是先说windows的吧,poonon它很强大的,它可以播放影音文件~!在window中使用phonon后,做发布版,首先得去F:/QT/qt/bin找到

放到你的可执行程序的文件夹中,然后再去F:/QT/qt/plugins,找到plugins

和加图片一样,把phonon_backend也放到你的可执行程序的文件夹中。别忘了在main函数中加QApplication::addLibraryPath("./plugins");

(如果你没加)

再看一遍,图片声音都有的发布版吧!

 

 

 

 

解决Qt中文输出为乱码问题,通常需要从编码设置、字体配置代码环境等方面入手。以下是详细的解决方案示例代码: --- ### **1. 设置正确的编码格式** 确保源文件编码为UTF-8,并在代码中显式指定编码。 ```cpp // 在main.cpp开头添加(仅限C++) #include <QTextCodec> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 设置全局编码为UTF-8 QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8")); // 其他代码... return app.exec(); } ``` > **注意**:Qt 5及以上本默认使用UTF-8,无需显式设置,但需确认源文件保存为UTF-8(无BOM)。 --- ### **2. 配置字体支持中文** 某些系统默认字体可能不包含中文字符,需手动指定支持中文的字体(如“SimSun”“Microsoft YaHei”)。 ```cpp // 在窗口或控件中设置字体 QFont font("Microsoft YaHei", 10); QApplication::setFont(font); // 全局设置 // 或针对特定控件 QLabel *label = new QLabel("中文文本"); label->setFont(QFont("SimSun", 12)); ``` --- ### **3. 使用QString的转义函数** 避免直接使用`QString::fromLocal8Bit()`,推荐使用`QStringLiteral`或`tr()`函数。 ```cpp // 正确方式(推荐) QString text = QStringLiteral("中文文本"); // 或使用翻译系统 QString text = tr("中文文本"); // 错误方式(易导致乱码) QString text = QString::fromLocal8Bit("中文文本"); // 依赖本地编码 ``` --- ### **4. 检查终端/控制台编码** 如果输出到控制台乱码,需确保终端支持UTF-8: - **Windows**:执行`chcp 65001`切换控制台编码为UTF-8。 - **Linux/macOS**:默认UTF-8,无需额外配置。 --- ### **5. 使用资源文件或翻译系统** 对于多语言支持,使用Qt的翻译工具(`.ts`文件)`QTranslator`: ```cpp QTranslator translator; translator.load(":/translations/zh_CN.qm"); // 加载翻译文件 app.installTranslator(&translator); ``` --- ### **6. 验证环境变量** 确保系统环境变量(如`LANG`或`LC_ALL`)设置为UTF-8(Linux/macOS): ```bash export LANG=en_US.UTF-8 # Linux/macOS ``` --- ### **完整示例代码** ```cpp #include <QApplication> #include <QLabel> #include <QFont> #include <QTextCodec> int main(int argc, char *argv[]) { QApplication app(argc, argv); // 设置全局字体编码 QFont font("Microsoft YaHei", 10); QApplication::setFont(font); // 创建窗口 QLabel label(QStringLiteral("中文显示正常")); label.show(); return app.exec(); } ``` --- ### **常见问题排查** 1. **源文件编码**:确认编辑器保存为UTF-8(无BOM)。 2. **字体缺失**:替换为系统已安装的中文字体(如`Arial Unicode MS`)。 3. **混合编码**:避免在代码中混用ANSIUTF-8字符串。 ---
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值