QT中英文切换,让你的软件有多国语言功能。
今天写一篇有关于Qt程序如何实现中英文切换的例子,之所以写这个,是因为这是最近项目的一个需求。
Qt国际化,网上的例子,很多很多.... 看似很简单,但是真正去做的时候,总是会遇到各种各样的问题,说实话,挺让人头疼的。
今天,把自己遇到的一些问题,分享一下,当做笔记,记录一下
1.在.pro手动输入testExcel_qMake_zh_CN.ts 和 testExcel_qMake_zh_EN.ts 这两个文件。
TRANSLATIONS += \
testExcel_qMake_zh_CN.ts \
testExcel_qMake_zh_EN.ts
2.按照图片,生成上面这两个文件。


3.去翻译 .st 语言文件



到这里,testExcel_qMake_zh_CN.qm 和 testExcel_qMake_zh_EN.qm 就生成了。很多教程是不教这部分内容(我个人理解是:其余的文章都是给懂的人看的,根本不针对小白。我都不懂,我怎看?所以最好一步一步教,你照做就懂什么意思了。)
4.在main文件添加:开机默认是中文还是英文。
#include "mainwindow.h"
#include <QApplication>
/**************************添加1/2 如下*************************************/
#include <QDebug>
#include <QLocale>
#include <QTranslator>
QTranslator trans; //必须要声明此外部变量
/**************************添加1/2 如上*************************************/
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
/*开机默认是什么语言你可以不添加,看自己需要*/
/**************************添加2/2 如下*************************************/
// 获取系统当前语言
QLocale locale;
QString language = locale.name();
// 根据系统语言加载相应的翻译文件
if (language.startsWith("zh_CN")) {
if (trans.load("testExcel_qMake_zh_CN", ":/i18n")) {
a.installTranslator(&trans);
qDebug() << "加载中文翻译文件成功";
} else {
qDebug() << "加载中文翻译文件失败";
}
} else {
if (trans.load("testExcel_qMake_en", ":/i18n")) {
a.installTranslator(&trans);
qDebug() << "加载英文翻译文件成功";
} else {
qDebug() << "加载英文翻译文件失败";
}
}
/**************************添加2/2 如上*************************************/
MainWindow w;
w.show();
return a.exec();
}
5.mainwindow.cpp 更改的部分
#include "mainwindow.h"
#include "qdebug.h"
#include "ui_mainwindow.h"
/**************************添加1/2 如下*************************************/
extern QTranslator trans; //必须要声明此外部变量
/**************************添加1/2 如上*************************************/
MainWindow::MainWindow(QWidget *parent)
: QMainWindow(parent)
, ui(new Ui::MainWindow)
{
ui->setupUi(this);
}
MainWindow::~MainWindow()
{
delete ui;
}
/**************************添加2/2 如下*************************************/
void MainWindow::EN() // 英文按键的槽函数,槽函数关联到按键的connect我省略了,自己加
{ // 因为槽函数我自己手动拉过去关联的,所以你看不出来
if (trans.load("testExcel_qMake_zh_EN", ":/i18n")) {
qApp->installTranslator(&trans);
ui->retranslateUi(this); // 重新翻译界面文字
qDebug() << "英文";
} else {
qDebug() << "加载英文翻译文件失败";
}
}
void MainWindow::CN() // 中文按键的槽函数,槽函数关联到按键的connect我省略了,自己加
{ // 因为槽函数我自己手动拉过去关联的,所以你看不出来
if (trans.load("testExcel_qMake_zh_CN", ":/i18n")) {
qApp->installTranslator(&trans);
ui->retranslateUi(this); // 重新翻译界面文字
qDebug() << "中文";
} else {
qDebug() << "加载中文翻译文件失败";
}
}
/**************************添加2/2 如上*************************************/
完结:这都看不懂,你留言。
 24-11-14带源码&spm=1001.2101.3001.5002&articleId=143764187&d=1&t=3&u=2e3c7c1c1e384ae4a18c1040d417ca58)
351

被折叠的 条评论
为什么被折叠?



