1.新建语言切换QT项目

我的项目是带动态ui的
2.在pro配置中英文切换的ts文件

TRANSLATIONS += lanague_cn.ts lanague_en.ts
3.布局,两种模式,一种是直接一个按钮切换,一个是使用单独按钮切换单独语言

4.记得第三步保存布局,然后打开QT自带的命令窗口


5.输入命令生成ts文件:(pro地址为你项目地址)
lupdate F:\QtApplition\ChineseEnglishSwitch\ChineseEnglishSwitch.pro

6.查看一下ts文件内容,可以直接把ts给拉到qt或者使用文件查看

7.此时有两种方式去改变ts:
(1).直接修改ts文件,把<translation>标签里面的空内容替换成你想替换的语音
(2).通过QT自带的软件去做:Linguist 5.12.2 (MinGW 7.3.0 64-bit)

注意这个窗口,因为程序导出ts默认是MainWindow,我直接改成中文的"窗口"


导入ts文件:





8.根据第七步修改完成的ts文件,我们继续使用第七步里面使用的QT软件生成所需切换语言的qm文件 ,我直接修改完两个ts文件,所以我这里直接发布全部,你们也可以一个一个操作

9.在项目导入我们所需使用的qm资源

先创建一个资源qrc



10.我直接上代码吧,有什么不懂的可以评论或者找我私聊
- #ifndef MAINWINDOW_H
- #define MAINWINDOW_H
-
- #include
- #include
-
- namespace Ui {
- class MainWindow;
- }
-
- class MainWindow : public QMainWindow
- {
- Q_OBJECT
-
- public:
- explicit MainWindow(QWidget *parent = nullptr);
- ~MainWindow();
-
- private slots:
- void on_pushButton_clicked();
-
- void on_pushButton_2_clicked();
-
- void on_pushButton_3_clicked();
-
- private:
- Ui::MainWindow *ui;
-
- void Languageloading(bool type);
- QTranslator m_translator;
- };
-
- #endif // MAINWINDOW_H
- #include "mainwindow.h"
- #include "ui_mainwindow.h"
- #include "QtDebug"
-
- MainWindow::MainWindow(QWidget *parent) :
- QMainWindow(parent),
- ui(new Ui::MainWindow)
- {
- ui->setupUi(this);
- Languageloading(false);
- }
-
- MainWindow::~MainWindow()
- {
- delete ui;
- }
-
- void MainWindow::on_pushButton_clicked()
- {
- Languageloading(true);
- }
-
- void MainWindow::on_pushButton_2_clicked()
- {
- Languageloading(false);
- }
-
- void MainWindow::Languageloading(bool type)
- {
- qDebug() << "type:" << type;
-
- switch (type)
- {
- case true:
- m_translator.load(":/lanague_cn.qm");
- break;
- case false:
- m_translator.load(":/lanague_en.qm");
- break;
- default:
- break;
- }
- qApp->installTranslator(&m_translator);
- setWindowTitle(tr("窗口"));
- ui->label->setText(tr("测试"));
- ui->pushButton_2->setText(tr("英文"));
- ui->pushButton->setText(tr("中文"));
- ui->pushButton_3->setText(tr("切换"));
- }
-
-
- bool bres = false;
- void MainWindow::on_pushButton_3_clicked()
- {
- bres = !bres;
- Languageloading(bres);
- }
这里的重点在我设置setText(tr()),如果不做这个操作,语言切换会失效,注意的是,tr里面的内容是你ts文件里面的source标签里面的内容,必须一毛一样
11.切换效果

