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);
}

之后点击这两个按钮就可以手动设置界面语言了。

posted @ 2020-04-28 11:30  lccsuse  阅读(366)  评论(0编辑  收藏  举报