1.QColorDialog 界面默认显示英文文本,如何显示中文?
在解决类似于QColorDialog 类的Qt 自带对话框时,其界面常常如下图所示为英文文本,
可能会与整个应用程序中其它界面中文文本不协调,那么有没有办法可以让诸如QColorDialog 之类的Qt自带对话框的界面全部以中文文本的形式显示呢?
查询QT 文档得知,可以通过Qt 自带的类QTranslator 为应用程序安装一个翻译器来实现文本的自动翻译:
static const QString FILE_NAME_TRANSLATOR{ "\\qt_zh_CN.qm" };
void TestTranslate::test_Translator()
{
QColorDialog *pColorDialog = new QColorDialog(this);
pColorDialog->show();
QTranslator *pTranslator = new QTranslator(this);
if (pTranslator->load(QApplication::applicationDirPath()+ FILE_NAME_TRANSLATOR))
{
qApp->installTranslator(pTranslator);
}
}
其中的qt_zh_CN.qm 为Qt提供的默认翻译文件,在其安装路径下能找到,经过以上步骤,QColorDialog 界面的大部分英文文本已被翻译为中文,
但是Pick Screen Color按钮 、OK 按钮和Cancel 按钮仍然为英文文本。
此时需要在Qt的安装路径下找到qt_zh_CN.ts文件并打开找到name为QColorDialog的context处添加如下代码:
<message>
<source>&Pick Screen Color</source>
<translation>获取屏幕颜色</translation>
</message>
然后保存该文件,并使用Qt提供lrelease.exe工具将qt_zh_CN.ts翻译为qt_zh_CN.qm文件,在windows系统的cmd 中输入以下代码:
d:\Qt5.13\5.13.2\msvc2015_64\bin>lrelease C:\qt_zh_CN.ts -qm d:\qt_zh_CN.qm
注:
d:\Qt5.13\5.13.2\msvc2015_64\bin 为:lrelease.exe 所在路径
C:\qt_zh_CN.ts 为:待翻译的汉化文件
d:\qt_zh_CN.qm 为:目标文件的保存路径
经过以上步骤可以发现,QColorDialog 对话框中原先为英文的Pick Screen Color 被翻译为“获取屏幕颜色”,
但是对话框中OK按钮和Cancel 按钮依然为英文文本。此时,需要再次打开qt_zh_CN.ts并添加以下代码
<context>
<name>QPlatformTheme</name>
<message>
<source>OK</source>
<translation>确定</translation>
</message>
<message>
<source>Save</source>
<translation>保存</translation>
</message>
<message>
<source>Save All</source>
<translation>全部保存</translation>
</message>
<message>
<source>Open</source>
<translation>打开</translation>
</message>
<message>
<source>Cancel</source>
<translation>取消</translation>
</message>
<message>
<source>Abort</source>
<translation>终止</translation>
</message>
<message>
<source>Close</source>
<translation>关闭</translation>
</message>
<message>
<source>Apply</source>
<translation>应用</translation>
</message>
<message>
<source>Reset</source>
<translation>重置</translation>
</message>
<message>
<source>Help</source>
<translation>帮助</translation>
</message>
<message>
<source>Discard</source>
<translation>抛弃</translation>
</message>
<message>
<source>&Yes</source>
<translation>是(&Y)</translation>
</message>
<message>
<source>Yes to &All</source>
<translation>全部是(&A)</translation>
</message>
<message>
<source>&No</source>
<translation>否(&N)</translation>
</message>
<message>
<source>N&o to All</source>
<translation>全部否(&O)</translation>
</message>
<message>
<source>Retry</source>
<translation>重试</translation>
</message>
<message>
<source>Ignore</source>
<translation>忽略</translation>
</message>
<message>
<source>Restore Defaults</source>
<translation>恢复默认</translation>
</message>
</context>
然后再次翻译qt_zh_CN.ts 文件为qt_zh_CN.qm文件,并加载该qm格式文件到需要汉化翻译的应用程序中即可实现Qt所有内置对话框界面的汉化。