Qt国际化实时切换

创建QT国际化例子

 

在TranslateDemo.pro中加入

 

加入后保存.pro文件,然后使用Qt语言家更新翻译

 

会生成两个ts文件,如下图

 

这两个ts文件可以直接用Qt以文本形式打开,或者使用Qt语言家Linguist打开,我更习惯用文本形式打开,打开english.ts是如下的一个xml格式的文件

 

将其属性type = "unfinished"所有去掉,改为这种,点击保存文件

 

那个chinese也采用类似做法:如下图

 

两个文件修改好后,点击保存,然后发布翻译

 

会生成两个qm文件,chinese.qmEnglish.qm文件

添加新文件res.qrc

 

 

添加前缀qm

 

 

添加文件,将两个qm文件加进qrc中,如下图,然后保存

 


下面是代码:MainWindow.h

#ifndef MAINWINDOW_H

#define MAINWINDOW_H

 

#include <QMainWindow>

#include <QTranslator>

namespace Ui {

class MainWindow;

}

 

class MainWindow : public QMainWindow

{

    Q_OBJECT

 

public:

    explicit MainWindow(QWidget *parent = 0);

    ~MainWindow();

 

private slots:

    void on_pushButton_clicked();

 

    void on_pushButton_2_clicked();

 

private:

    Ui::MainWindow *ui;

 

    QTranslator translater;           //国际化

};

 

#endif // MAINWINDOW_H

 

MainWindow.cpp

#include "mainwindow.h"

#include "ui_mainwindow.h"

 

MainWindow::MainWindow(QWidget *parent) :

    QMainWindow(parent),

    ui(new Ui::MainWindow)

{

    ui->setupUi(this);

}

 

MainWindow::~MainWindow()

{

    delete ui;

}

 

void MainWindow::on_pushButton_clicked()

{

    if (translater.load(":/qm/chinese.qm"))

    {

        qApp->installTranslator(&translater);

    }

    ui->retranslateUi(this); //这句必须带,在线实时切换

}

 

void MainWindow::on_pushButton_2_clicked()

{

    if (translater.load(":/qm/english.qm"))

    {

        qApp->installTranslator(&translater);

    }

    ui->retranslateUi(this); //这句必须带,在线实时切换

}

 

效果:

 

再点击又回来了

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值