文档章节

Qt界面显示中文乱码问题

zjushawnelee88
 zjushawnelee88
发布于 2013/06/20 15:12
字数 553
阅读 17282
收藏 5
点赞 1
评论 0
QT

解决方法,csdn上看来的,设置为系统字体,用三个

QTextCodec::setCodecForTr()

QTextCodec::setCodecForCStrings()

QTextCodec::setCodecForLocale()

#include <QApplication>
#include <QDialog>
#include <QLabel>
#include <QTextCodec>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    //Set Encode
    QTextCodec::setCodecForTr(QTextCodec::codecForName("system"));
    QTextCodec::setCodecForCStrings(QTextCodec::codecForName("system"));
    QTextCodec::setCodecForLocale(QTextCodec::codecForName("system"));

    QDialog w;
    QLabel label(&w);
    label.setText("Hello World!你好,Qt!");   //attention!! 

    w.show();
    return a.exec();
}

另外一种方法,《QT快速入门》一书中的方法,只需要一个set,但是在label中填写文字的时候,需要

QObject::tr()

QTextCodec类提供了文本编码的转换功能。

QTextCodec类中的静态函数setCodecForTr()用来设置QObject::tr()函数所要使用的字符集。

QTextCodec::codecForLocale()返回了系统指定的字符集,QtextCodec::setCodecForTr()设置tr()用到的字符集。


总之,为了显示中文,需要设置字符集,然后使用QObject::tr()函数将字符串进行编码转换。

#include <QApplication>
#include <QDialog>
#include <QLabel>
#include <QTextCodec>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);


    QTextCodec::setCodecForTr(QTextCodec::codecForLocale());  //set
    //or the code below may work, not the same as the book told in P27
    //replace "UTF-8" with "GB2312"
    //QTextCodec::setCodecForTr(QTextCodec::codecForTheName("GB2312"));
    QDialog w;
    QLabel label(&w);
    label.setText(QObject::tr("Hello World!你好,Qt!"));   //attention!! QObject::tr() used.
    w.show();
    return a.exec();
}


Q:在qt的IDE中编写程序,如上,运行没问题,但是但是换成直接用command line编译,代码是直接拷贝过去的,运行出问题额:

A:后来发现时文件默认编码问题:

如果文件中有中文,则需要存储为UTF-8的格式,比如用IDE根据模板生成的示例工程2-1,

文件 编码
hellodialog.cpp ANSI
hellodialog.h ANSI
hellodialog.ui UTF-8
helloworld.pro ANSI
helloworld.pro.user ANSI
main.cpp ANSI

只有在界面当中直接输入了中文“Hello world!你好,Qt!",因此只有“hellodialog.ui”这个文件是“UTF-8格式”的。

而在范例2中(2-2),由于需要手动输入中文,故只有文件“main.cpp”的编码是“UTF-8”的。

 helloworld.pro ANSI
helloworld.pro.user ANSI
main.cpp UTF-8


用qt直接创建的文件默认编码为ANSI,中文则为UTF-8
而win7中直接创建文本文件默认编码为ANSI
我把自己创建的文件另存为UTF-8格式之后,再编译运行,没有问题了

编码问题参考:http://bbs.chinaunix.net/thread-753836-1-1.html



© 著作权归作者所有

共有 人打赏支持
zjushawnelee88
粉丝 3
博文 25
码字总数 23793
作品 0
杭州
程序员
Qt Creator编码设置--win7-vs2010

刚开始学习Qt5,记录下捣腾中发现的问题。 Qt Creator工具已经设置了”默认文件编码“为"UTF-8",pro项目文件中做了一些注释,注释都是中文,当我通过工具增加源码文件之后pro文件中的中文都...

Make42
2013/05/04
0
2
Qt5.0+msvc2010:解決中文乱码的问题

1、在Qt Creator的工具列,选择“工具”---->”选项“,进入设置界面 2、在弹出的设置界面里面,选择“文本编辑器”,选择“行为”选项卡,把“行为”选项卡下面的”默认编码“置成“UTF-8”...

花后叶
2014/01/06
843
0
Qt国际化(源码含中文时)的点滴分析

注意:本文不介绍如何使用Qt的国际化、本地化支持。本文针对的是偏底层的、Manual和其他资料中很少涉及的东西。所以,继续之前,请先确保:你已经对如何使用Qt的国际化比较熟悉了。 本文针对...

晨曦之光
2012/05/08
401
0
Qt中translate、tr关系 与中文问题

题外话:何时使用 tr ? 在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人: (1)因为发现中文老出问题,然后搜索,发现很多人用tr,于是他也开始用tr (2)另一类人,确实是出于国际...

长平狐
2013/01/06
48
0
Qt中translate、tr关系 与中文问题

转自:http://hi.baidu.com/cyclone/blog/item/aa56e5dd1a79f7e176c638be.html 题外话:何时使用 tr ? 在论坛中漂,经常遇到有人遇到tr相关的问题。用tr的有两类人: (1)因为发现中文老出问...

长平狐
2013/01/11
527
0
Qt中中文处理的简单方法

QT是一套很不错的界面开发库,而且考虑到了跨平台的要求,使用也相对比较容易上手。我也刚刚才学习用QT开发,发现它对中文的处理做的不是很好,或者更贴切的是做的不够智能吧,如果在字符串中...

长平狐
2013/01/06
58
0
msysgit 中文乱码问题解决方法

msysgit安装好后处理中文是有问题的:ls中文目录/文件名乱码;提交中文的log,push到服务器上会乱码;git log查看服务器pull过来的log乱码。 1、ls命令列出的中文目录/文件名正确显示解决方法...

lieefu
2015/07/01
0
0
重装系统后python无法输出中文

重装前没有任何中文问题,控制台打印,QT窗体的中文都没问题 错误SyntaxError: Non-ASCII character 'xe5' 重装系统WIN7 SP1后,再安装了PY2.7,用pycharm后发现不能打印中文,用# coding=utf-8某...

yongzhong
2014/02/08
223
1
嵌入式Qt方案中文显示系列:应用程序本地中文显示的实现

嵌入式Qt应用程序进行中文显示有两种解决方案,一种是直接在代码中使用中文,利用QTextCodec类来实现,另一种是使用qt平台的国际化支持机制,通过语言翻译来实现。第一种方案直接明了,相对来...

水海云
2013/04/02
0
1
Zabbix-web的中文显示及其乱码问题解决方法

问题: 通常在安装完zabbix后默认显示的是英文界面,虽然1-2个月也就习惯了,但对于刚开始接触的人来说英文毕竟不太友好,所以为了今后方便还是将界面改为中文;当改为中文后,在查看图表时会...

紫色的茶碗
2017/08/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

mysql 主从复制中遇到的错误!

。。。。。

万建宁
10分钟前
0
0
DUBBO 详细介绍

摘要: 主要核心部件: Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制. RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能 Registry: 服务目录框架...

明理萝
21分钟前
0
1
4 个快速的 Python 编译器 for 2018

简评:Python 和其他的解释型语言一样经常被吐槽性能不行,所以开发人员为了提升性能创建了不少编译器,本文则选取其中的四个做了基准测试。 Python 其实是一种相当快的语言,但它并不像编译...

极光推送
24分钟前
0
0
spring boot注册多个MQ服务器的问题

关于注册到多个MQ源的文章已经有很多了,这里记录一下声明queue的坑; 如果使用注册bean的方式声明queue,会导致声明的queue同时被注册到所有的MQ源上; //如果使用下面的声明方式,que...

placeholder
25分钟前
0
0
Java面试基础篇——第九篇:BIO,NIO,AIO的区别

现在IO模型主要分三类:BIO(同步阻塞IO),NIO(同步非阻塞IO),AIO()。 先来看看BIO。 1. BIO 服务端接受到请求后,要指派或新建一个线程去处理客户端的IO请求,直到收到断开连接的指令。这么做...

developlee的潇洒人生
30分钟前
0
0
@RequestMapping @ResponseBody 和 @RequestBody 用法与区别

1.@RequestMapping 国际惯例先介绍什么是@RequestMapping,@RequestMapping 是一个用来处理请求地址映射的注解,可用于类或方法上。用于类上,表示类中的所有响应请求的方法都是以该地址作为...

特拉仔
32分钟前
1
0
基于 HTML5 结合互联网+ 的 3D 隧道

前言 目前,物资采购和人力成本是隧道业发展的两大瓶颈。比如依靠民间借贷,融资成本很高;采购价格不透明,没有增值税发票;还有项目管控和供应链管理的问题。成本在不断上升,利润在不断下...

xhload3d
34分钟前
0
0
济南小程序热度分析

原文链接:http://www.jnqianle.cn/company/2072.html

tianma3798
35分钟前
1
0
大数据软件

beats 采集 kafka spark hive es grafana zeppelin

ArlenXu
37分钟前
0
0
Mac item2常用快捷键

标签 新建标签:command + t 关闭标签:command + w 切换标签:command + 数字 command + 左右方向键 切换全屏:command + enter 查找:command + f 分屏 水平分屏:command + d 垂直分屏:c...

说回答
40分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部