Qt 国际化之动态转换
在前面已经说过Qt国际化的静态转换,但是在更多的时候我们还是需要用到动态转换,因此下面就是对Qt做动态转换的方法。
假设已经在资源文件中添加了中英文的语言包。
1:首先在UI界面添加两个按钮用于切换中文和英文,分别命名为chinesebtn和 englishbtn。
2:添加相关代码,在头文件widget.h中添加如下代码(红色标出的代码)
#ifndef WIDGET_H #define WIDGET_H #include <QWidget> #include <QTranslator> namespace Ui { class Widget; } class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = nullptr); ~Widget(); private slots: void on_chinessbtn_clicked(); void on_englishbtn_clicked(); private: Ui::Widget *ui; QTranslator translater; }; #endif // WIDGET_H
3:在源文件widget.cpp中定义用来切换语言的两个按钮的槽函数
void Widget::on_chinessbtn_clicked() { if(translator.load(":/language/tr_ch.qm")) qApp->installTranslator(&translator); ui->retranslateUi(this); } void Widget::on_englishbtn_clicked() { if(translator.load(":/language/tr_en.qm")) qApp->installTranslator(&translator); ui->retranslateUi(this); }
之后点击这两个按钮就可以手动设置界面语言了。