QT messagebox 乱码解决
来源:互联网 发布:av去码软件 编辑:程序博客网 时间:2024/06/06 00:03
http://www.mutouxiaogui.cn/blog/?p=277
Qt 中文乱码
使用 Qt 经常可能遇到中文乱码的问题,这里介绍一下 Qt 中文窗口和路径乱码的解决方法。我的环境是 Qt5.2 VS2012 Windows8.1 64bit。
Qt 中文乱码原因
关于 Qt 中文乱码的原因以及在 Qt4 中解决中文乱码问题,推荐参考博文:qt中文乱码问题
Qt4 中 QTextCodec 的很多函数在 Qt5 中都没有了,因此适用与 Qt4 的解决方法对 Qt5 无效。具体可以查看 Qt 的官方文档:
Qt4
Qt5
Qt5 中文乱码解决
下面分别介绍无 BOM UTF-8、有 BOM UTF-8 和 GBK 编码下 Qt 窗口、路径以及 cout 输出中文路径乱码的解决方法。
- 无 BOM UTF-8
由于 Qt5 内部使用 Unicode 编码,对于无BOM UTF-8 编码的源文件,可以直接使用字符串而不需特殊转换。
测试程序如下:1
#include "mainwindow.h"
2
#include <QApplication>
3
#include <QMessageBox>
4
#include <QFileDialog>
5
#include <iostream>
6
using
namespace
std;
7
8
int
main(
int
argc,
char
*argv[])
9
{
10
QApplication a(argc, argv);
11
MainWindow w;
12
w.setWindowTitle(
"无BOM UTF8 中文标题"
);
13
w.show();
14
QString dir = QFileDialog::getExistingDirectory(&w);
15
cout << dir.toLocal8Bit().data() << endl;
16
QMessageBox::information(0,
"MessageBox 文件路径"
, dir);
17
18
return
a.exec();
19
}
程序运行结果如下图:
- 有 BOM UTF-8
对于带 BOM 的 UTF-8 文件,可以使用 QString::fromLocal8Bit 的方法解决乱码问题,测试程序如下:
1
#include "mainwindow.h"
2
#include <QApplication>
3
#include <QMessageBox>
4
#include <QFileDialog>
5
#include <iostream>
6
using
namespace
std;
7
8
int
main(
int
argc,
char
*argv[])
9
{
10
QApplication a(argc, argv);
11
MainWindow w;
12
w.setWindowTitle(QString::fromLocal8Bit(
"有BOM UTF8 中文标题"
));
13
w.show();
14
QString dir = QFileDialog::getExistingDirectory(&w);
15
cout << dir.toLocal8Bit().data() << endl;
16
QMessageBox::information(0, QString::fromLocal8Bit(
"MessageBox 文件路径"
), dir);
17
18
return
a.exec();
19
}
程序运行结果如下图:
- GBK
对于 GBK 编码的文件,同样可以使用 QString::fromLocal8Bit 的方法解决,测试程序如下:
1
#include "mainwindow.h"
2
#include <QApplication>
3
#include <QMessageBox>
4
#include <QFileDialog>
5
#include <iostream>
6
using
namespace
std;
7
8
int
main(
int
argc,
char
*argv[])
9
{
10
QApplication a(argc, argv);
11
MainWindow w;
12
w.setWindowTitle(QString::fromLocal8Bit(
"GBK 中文标题"
));
13
w.show();
14
QString dir = QFileDialog::getExistingDirectory(&w);
15
cout << dir.toLocal8Bit().data() << endl;
16
QMessageBox::information(0, QString::fromLocal8Bit(
"MessageBox 文件路径"
), dir);
17
18
return
a.exec();
19
}
程序运行结果如下图:
对于 Qt5 中的 QTextCodec 貌似并不能解决乱码问题,测试程序如下:
1
#include "mainwindow.h"
2
#include <QApplication>
3
#include <QMessageBox>
4
#include <QFileDialog>
5
#include <iostream>
6
#include <QTextCodec>
7
using
namespace
std;
8
9
int
main(
int
argc,
char
*argv[])
10
{
11
QTextCodec::setCodecForLocale(QTextCodec::codecForName(
"GBK"
));
12
QApplication a(argc, argv);
13
MainWindow w;
14
w.setWindowTitle(
"GBK 中文标题"
);
15
w.show();
16
QString dir = QFileDialog::getExistingDirectory(&w);
17
cout << dir.toLocal8Bit().data() << endl;
18
QMessageBox::information(0, QString::fromLocal8Bit(
"MessageBox 文件路径"
), dir);
19
20
return
a.exec();
21
}
程序运行结果如下图:
关于 Qt 中文乱码的问题就简单介绍到这里,有任何问题或建议欢迎在下面的评论框中留言共同探讨。thx
1 0
- QT messagebox 乱码解决
- QT messageBox
- QT messageBox
- QT messageBox
- Qt 中文乱码解决
- QT解决中文乱码
- 解决Qt乱码问题
- qt中文乱码解决
- QT中文 乱码解决
- Qt中文乱码解决
- qt中文乱码解决
- QT 中文乱码解决
- qt解决乱码问题
- Qt Simulator中文乱码解决
- QT中文乱码的解决
- Qt 中文乱码解决大全
- QT中文乱码的解决
- QT中文显示乱码解决
- JQuery淡入淡出效果
- Operational Data Store (ODS) Defined
- JS基础
- Ubuntu Server上OpenVPN搭建笔记
- Servlet和Applet(Java小应用程序)相关知识!!!!------阿冬专栏
- QT messagebox 乱码解决
- WIN7系统下IE9降回IE8的方法
- android中各种颜色在drawable.xml的值
- spring源码gradle获得eclipse工程时,spring-beans-groovy项目GroovyDynamicElementReader报错解决
- shutil模块:复制文件和文件夹,文件压缩
- 基于Unity5.0系统的新打包方式 [第一讲]
- IOS开发之AVAudioPlayer
- 【Linux C程序设计】创建多线程
- Github开源项目补充(2)