Qt实现多国语言(即界面翻译)可实时进行切换
生活随笔
收集整理的這篇文章主要介紹了
Qt实现多国语言(即界面翻译)可实时进行切换
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
?
1.在工程文件添加 TRANSLATIONS = debug/lang_English.ts \debug/lang_Chinese.ts2.在需要翻譯的地方用上tr 例如:setText(tr("hello world"));3.提供一個(gè)更改語言的接口 void MainWindow::changeTr(int language)4.重載void changeEvent(QEvent *e); 對(duì)語言改變事件進(jìn)行處理5.利用qt語言家更新翻譯,手工翻譯生成的.ts文件之后,再進(jìn)行發(fā)布翻譯?
?
?
?
下面是個(gè)簡單例子:
//mainwindow.h #ifndef MAINWINDOW_H #define MAINWINDOW_H#include <QMainWindow> #include <QLabel>namespace Ui { class MainWindow; }class MainWindow : public QMainWindow {Q_OBJECTpublic:explicit MainWindow(QWidget *parent = 0);~MainWindow();void changeEvent(QEvent *e);void changeTr(int language_label);private:Ui::MainWindow *ui;QLabel *label,*label1; };#endif // MAINWINDOW_H //mainwindows.cpp #include "mainwindow.h" #include "ui_mainwindow.h" #include <QLabel> #include <QTranslator> #include <QDebug>MainWindow::MainWindow(QWidget *parent) :QMainWindow(parent),ui(new Ui::MainWindow) {label = new QLabel(this);label1 = new QLabel(this);label->setText(tr("hello world"));label1->setText(tr("hello"));label1->move(label->x(),label->y()+label->height());ui->setupUi(this);}MainWindow::~MainWindow() {delete ui; }void MainWindow::changeTr(int language_label) {QString qmFilename;static QTranslator* translator;if (translator != NULL){qApp->removeTranslator(translator);delete translator;translator = NULL;}translator = new QTranslator(this);QString runPath = QCoreApplication::applicationDirPath(); //獲取文件運(yùn)行路徑qDebug() << runPath;if(language_label==1){qmFilename = runPath + "/lang_Chinese.qm";}else{qmFilename = runPath + "/lang_English.qm";}qDebug() << qmFilename;if (translator->load(qmFilename)){qDebug() << "installTranslator";qApp->installTranslator(translator);} // ui->retranslateUi(this); // 重新設(shè)置界面顯示 }void MainWindow::changeEvent(QEvent *e) {// MainWindow::changeEvent(e);switch (e->type()){case QEvent::LanguageChange:qDebug() << "changeEvent" << e->type();label->setText(tr("hello world"));label1->setText(tr("hello"));ui->retranslateUi(this);break;default:break;} } //main.cpp #include "mainwindow.h" #include <QApplication> #include <QThread> #include "stdlib.h"int main(int argc, char *argv[]) {QApplication a(argc, argv);MainWindow w;// w.changeTr(1); w.show();w.changeTr(1);return a.exec(); }?
轉(zhuǎn)載于:https://www.cnblogs.com/nanqiang/p/10385073.html
總結(jié)
以上是生活随笔為你收集整理的Qt实现多国语言(即界面翻译)可实时进行切换的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过SWD J-Link使用J-Link
- 下一篇: “Java是编译执行的语言”这句话对吗?