Qt之中文显示(QMessageBox、QLineEdit右键菜单等)

来源:http://blog.sina.com.cn/s/blog_a6fb6cc90101art3.html

在编写Qt程序的时候,总会碰到中文问题,一直都很困惑,原本在使用QLineEdit的时候总会出现右键英文的情况,开始的时候是将右键功能屏蔽掉。使用setContextMenuPolicy(Qt::NoContextMenu)来设置无右键菜单,但是后来发现这虽然省事,但是有不足之处,密码框可以没有右键菜单、不可复制、粘贴,但是普通的文本框还是得需要此项功能的,所以就摸索着如何实现,做起来也很是简单!

1、从Qt安装目录下面将文件“D:\SoftWare\QtOpenSource\translations\qt_zh_CN.qm”复制一份到你的项目目录下。

2、建立资源文件(QRC.qrc)

位置为工程目录下:

内容:

qt_zh_CN.qm

3、在主函数main.cpp中加载相应的资源文件。

 1 #include #include "main_widget.h"
 2
 3 int main(int argc, char *argv[])
 4 {
 5 //创建QApplication对象,管理整个应用程序的资源,通过argc和argv来获取它自己的命令行参数;
 6 QApplication app(argc, argv);
 7
 8 //设置编码,一般在Window开发环境里,是GBK编码,在Linux开发环境里,是utf-8编码
 9 //获取系统编码,否则移植会出现乱码
10 QTextCodec *codec = QTextCodec::codecForName("System");
11
12 //设置和对本地文件系统读写时候的默认编码格式
13 QTextCodec::setCodecForLocale(codec);
14
15 //设置传给tr函数时的默认字符串编码
16 QTextCodec::setCodecForTr(codec);
17
18 //用在字符常量或者QByteArray构造QString对象时使用的一种编码方式
19 QTextCodec::setCodecForCStrings(codec);20 //加载Qt中的资源文件,使Qt显示中文(包括QMessageBox、文本框右键菜单等)    QTranslator translator;
21 translator.load(":/qm/qt_zh_CN");
22 app.installTranslator(&translator);
23
24 MainWidget main_widget;
25 main_widget.show();
26
27 return app.exec();
28 }

注:

技术在于交流、沟通,转载请注明出处并保持作品的完整性。

作者:╰☆奋斗ing?孩子` 原文:http://blog.sina.com.cn/s/blog_a6fb6cc90101art3.html

时间: 2024-07-28 16:43:33

Qt之中文显示(QMessageBox、QLineEdit右键菜单等)的相关文章

Qt支持中文显示

Qt支持中文显示<1>.在代码中添加以下代码QTextCodec* codec = QTextCodec::codecForLocale();if (codec != NULL){    QTextCodec::setCodecForLocale(codec);    QTextCodec::setCodecForCStrings(codec);    QTextCodec::setCodecForTr(codec);} <2>.在应用程序目录建立一个codecs文件夹,并将Qt对

关于Qt中 中文显示的解决办法

关于Qt中 中文显示的解决办法 在linux平台下,这样显示中文 QLabel *label = new QLabel; QTextCodec *codec = QTextCodec::codecForName("UTF-8"); label->setText(codec->toUnicode("<center><h1>你好</h1></center>"));  label->setWindowTit

Qt开发中文显示乱码

Qt开发中文显示乱码 来源 https://www.jianshu.com/p/ed269df8104d 参考 https://blog.csdn.net/J_H_C/article/details/93882284 为什么会出现乱码 首先,我们需要有的概念是乱码的问题是由编码和解码方式引起的.涉及到编码方式的地方有3个: 源码字符集 执行字符集 运行环境字符集 源码字符集确切的说是编译器认为源码文件的编码方式,执行字符集是可执行程序采用的编码方式,而运行环境字符集则是环境支持的编码方式.编译程

嵌入式Linux下Qt的中文显示

一般情况下,嵌入式Qt界面需要中文显示,下面总结自己在项目中用到的可行的办法 1,下载一种中文简体字体,比如我用的是"方正准圆简体",把字体文件放在ARM开发板系统的Qt字库中,即/usr/lib/fonts下 2,添加ARM开发板上的环境变量,打开vi /etc/profile,添加 [cpp] view plain copy export QT_QWS_FONTDIR=/usr/lib/fonts 3,在main.cpp中,添加 [cpp] view plain copy QTex

QT解决中文显示问题

#include <QTextCodec>     查询一下 如何创建 QTextCodec类型的对象? QTextCodec* QTextCodec::codecForName("编码方式");  ==============================================    GBK    gb2312   utf-8      unicode<-------hahaha

Qt:QT右键菜单

Qt QTableView 上加右键弹出菜单, 并复制选中的单元格内容到剪贴板中 http://wenku.baidu.com/view/c51cfb63cf84b9d528ea7a29.html http://www.cppblog.com/biao/archive/2010/01/01/104593.html QWidget及其子类都可有右键菜单,因为QWidget有以下两个与右键菜单有关的函数: Qt::ContextMenuPolicy contextMenuPolicy () cons

Qt之QAbstractItemView右键菜单

一.功能概述 说起右键菜单,之前Qt之自定义QLineEdit右键菜单这篇文章中我已经讲述过3种右键菜单的实现方式,今儿也是在啰嗦一下,针对QListWidget类在定制一下右键菜单,我使用的具体方式呢,是直接重写了contextMenuEvent方法,在这个方法中弹出右键菜单. 二.效果展示 如图1是针对QListWidget定制的右键菜单,美观程度一般,但是功能基本实现 图1 QListWidget右键菜单 三.代码讲解 右键菜单在相关文章小节中我已经给出了一些文章,关于右键菜单的弹出逻辑我

WPF 根据指定条件显示或禁止listView中的每一项的右键菜单

昨天要做一个ListView的右键菜单,需要根据listView绑定的集合中每个对象里的一个bool属性来决定是否显示该项的右键菜单,经过不懈的尝试和努力,最终实现了两种方案,一种是当该值为false时,可以点出右键菜单,但菜单项置灰不可选:另一种就是直接不出来菜单,右击没反应.下面是第一种方案: <ListView x:Name="ServerList" ItemsSource="{Binding Path=Servers}"> <ListVie

JS简单实现自定义右键菜单

RT,一个简单的例子,仅仅讲述原理 <div id="menu" style="width: 0;height: 0;background: cadetblue;position: absolute"></menu> 假设我要把上面这个div设置为右键菜单,先随意美化一下. 原理就是利用contextmenu事件,右键点击时,会触发这个事件时,该事件对象可以获得鼠标距离页面左上角的距离clientX和clientY, 我们可以利用这两个属性,