如何将Qt自带的对话框显示为中文(或英文)?
需求来源:
项目是中英文系统,所以在项目切换到中文时,qt自带的对话框也显示中文,而不是OK Yes No等。
方法1:将QMessageBox的按钮显示中文
void Widget::on_btMessage_clicked()
{
QMessageBox box(QMessageBox::Warning, tr("警告"), tr("不能点击这个按钮!"));
QMessageBox.setStandardButtons(QMessageBox::Ok);
box.setButtonText(QMessageBox::Ok, tr("确定"));
box.exec();
}
效果图:
缺点: 当使用的QMessageBox量比较大时,这个方法不太方便,代码量会很多。是一个比较简单,但也是比较笨的方法。
方法2: 载入QT的中文 (英文)
在Qt的安装目录下找translations,我的路径为D:\Qt\Qt5.6.3\5.6.3\mingw49_32\translations(仅作为参考);找到qt_en.qm和 qt_zh_CN.qm( qt_zh_CN.ts).qt_zh_CN.qm文件就是我们需要的标准对话框的翻译文件。若果有翻译不齐全的,可以修改qt_zh_CN.ts文件翻译一下,重新生成.qm文件即可。
重点: 应用程序加载qt_zh_CN.qm文件
#include "widget.h"
#include <QApplication>
#include <QTranslator>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTranslator qt_translator; //使用QTranslator加载qm文件
bool IsLoad = qt_translator.load(":/lang/zh_CN"); //该路径是工程资源文件路径 zh_CN 是qt_zh_CN.qm的别名(ps可替换成绝对路径或相对路径)
if(IsLoad){
a.installTranslator(&qt_translator); //加载qt自带的翻译文件
}
Widget w;
w.show();
return a.exec();
}
效果图:
参考文献
1、翻译资源:https://code.qt.io/cgit/qt/qttranslations.git/tree/translations
2、参考博客: https://blog.csdn.net/libaineu2004/article/details/19030129
3、其它资源:https://download.csdn.net/download/weixin_40314351/12412987