QT笔记(3)——Qt的lineEdit和textEdit的右键菜单汉化

关于Qt一些控件鼠标右键菜单汉化的问题,网上有一些方法,试了一下,这里做一下总结:

1、汉化需要“.qm”这个文件,这个如果深入的话可以学习一下Qt的Linguist,这个网上很多;如果只做右键菜单汉化,在qt安装目录里找qt_zh_CN.qm这个文件拷贝出来就可以;文件一般在...\translations\qt_zh_CN.qm;

2、在资源管理器里加载;最好放在自己程序文件目录里,方便写rc文件的目录,方法是在Qt Creator窗口左边项目文件管理里——右键——添加新文件——Qt——Qt Resource File——起个名字一路choose下去就好;然后选中.qrc——右键——add prefix——起个名字;然后.qrc——右键——open in editor——添加文件——选中qt_zh_CN.qm;

3、在main.cpp中添加如下:

#include "widget.h"
#include <QApplication>
#include <QTranslator>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTranslator translator;
    qApp->installTranslator(&translator);
    translator.load(":/language/qt_zh_CN.qm");
    Widget w;
    w.show();
    return a.exec();
}
注意translator.load(),加载的是文件路径,也就就是qrc里的路径,之前添加的前缀记得写上,一般如果运行后,没有bug,但是右键菜单还是英文,问题都是这里;

如果运行没问题效果如下:


当然还没有完事,如果在textEdit里右键调出菜单还是英文,这里解决的办法如下或者参考:http://bbs.csdn.net/topics/390459238;

4、需要完整的汉化文件:widgets.qm;这个一个方法是自己编译,下载qt源文件,在.....src\widgets目录里找到widgets.pro,用qt打开,添加添加一行:TRANSLATIONS += widgets.ts;然后选择:工具->外部->Qt语言家->更新翻译,会目录下生成widgets.ts,然后用Qt Linguist打开widgets.ts,发布为widgets.qm;当然如果嫌麻烦可以到这里下载: https://pan.baidu.com/s/1c1PtsfY 密码: a7mb;

5、同上面一样将widgets.qm拷贝到目的,并且在qrc中加载;效果图如下:


6、在main.cpp中再次添加,完整代码如下:

#include "widget.h"
#include <QApplication>
#include <QTranslator>
int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QTranslator translator;
    qApp->installTranslator(&translator);
    translator.load(":/language/qt_zh_CN.qm");
    //添加qt_zh_CN.qm汉化;
    
    QTranslator translator2;
    qApp->installTranslator(&translator2);
    translator2.load(":/language/widgets.qm");
    //添加widgets.qm汉化;
    
    Widget w;
    w.show();
    return a.exec();
}
另外感谢大神们的博客:http://blog.csdn.net/xbnlkdbxl/article/details/51322552;



### 回答1: Q: lineedittextedit区别 A: lineedittextedit都是Qt的文本输入控件,但是它们的功能和使用方式有所不同。 lineedit是单行文本输入框,只能输入一行文本,适用于输入单个数据或者短语。它的特点是简单、轻量级,可以设置输入限制和自动补全等功能。 textedit是多行文本输入框,可以输入多行文本,适用于输入长篇文字或者多个数据。它的特点是功能强大,可以设置字体、颜色、对齐方式等样式,支持富文本编辑和插入图片等功能。 因此,根据实际需要选择合适的控件使用。 ### 回答2: LineEditTextEditQT常用的两个控件,它们都是用来输入和显示文本的。它们的区别主要在于以下几点: 1. 功能不同 LineEdit可以用来输入单行文本,比如用户名、密码等。它只能输入一行文本,不能进行格式化和分段,也不能插入图片或者表格等内容。 而TextEdit则可以用来输入多行文本,可以进行格式化和分段,也支持插入和显示图片、表格等内容。因此TextEdit通常用来输入和显示文章、邮件等多行文本内容。 2. 外观不同 LineEdit只能显示单行文本,因此它的宽度是根据输入的文本自动调整的。而TextEdit则可以显示多行文本,因此它有一个可以设置的固定宽度和高度。 LineEdit的输入框呈现通常为一条灰色边框,是一个简单的单行文本输入框。而TextEdit的输入框通常呈现为一个矩形接收器,可以设置输入框的样式,更具有美感。 3. 使用方式不同 LineEdit通常用于简单的输入项,在表单或者输入框嵌入使用效果更佳。而TextEdit则适用于通讯录、邮件列表、读取数据库或者从文件读取内容等需要大量文本输入和显示的场合。 总的来说,LineEditTextEdit都是用户输入文本的控件,但是它们的使用场景和功能不同。选择合适的控件可以让我们更好地完成自己的任务。 ### 回答3: LineEditTextEditQt框架常用的两个控件,它们都是输入框,但是它们还是存在一些区别。 1. 功能上的区别:LineEdit控件只能输入单行文本,而TextEdit控件可以输入多行文本。 2. 外观上的区别:LineEdit控件通常用于对单个输入项进行编辑,而TextEdit控件则是用于显示大段的文本内容。LineEdit控件的外观通常是一个长条状的输入框,而TextEdit控件则是类似于一个文本框。 3. 处理空输入的区别:LineEdit控件不能处理空输入,即使输入框为空,LineEdit控件也不会有任何反应。而TextEdit控件可以处理空输入,即使对于空文本也会保留TextEdit控件的格式样式。 4. 处理文本内容的区别:LineEdit控件只能对单个文本框的文本进行编辑和设置,而TextEdit控件可以对整个文本内容进行编辑和设置。 总体而言,LineEdit控件适用于单行输入内容的情况,例如登录窗口的账号输入框;而TextEdit控件适用于多行输入或显示大段文本的情况,例如编辑器的文本框。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值