日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Qt实现多国语言(即界面翻译)可实时进行切换

發(fā)布時間:2025/4/14 编程问答 19 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Qt实现多国语言(即界面翻译)可实时进行切换 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?

1.在工程文件添加 TRANSLATIONS = debug/lang_English.ts \debug/lang_Chinese.ts2.在需要翻譯的地方用上tr 例如:setText(tr("hello world"));3.提供一個更改語言的接口 void MainWindow::changeTr(int language)4.重載void changeEvent(QEvent *e); 對語言改變事件進(jìn)行處理5.利用qt語言家更新翻譯,手工翻譯生成的.ts文件之后,再進(jìn)行發(fā)布翻譯

?

?

?

?

下面是個簡單例子:

//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(); //獲取文件運行路徑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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。