概述:

利用Qt-语言家实现中英文切换目的,解决项目需求;
步骤:
1.在已有工程pro中添加代码;
2.在已有工程目录下创建RESOURCES文件夹(文件夹名字自取);
3.添加中英切换需要头文件;
4.点击QTcreator菜单栏->工具->外部->Qt语言家->更新翻译;
5.找到并打开Qt语言家->打开文件(2中全部文件)->此时会显示工程中文字一一对应添加中英文保存即可;
6.点击QTcreator菜单栏->工具->外部->Qt语言家->发布翻译;
注意:控件上的文件系统默认tr包裹,如代码中文字需要我们手动添加tr,也可以采用tr宏的方式,在编译时会提示那些文字没有被包裹;

代码如下:

.pro:

#-------------------------------------------------
#
# Project created by QtCreator 2020-01-22T20:27:24
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets


#中英切换
TRANSLATIONS += RESOURCES/tr_zh.ts   \
            RESOURCES/tr_en.ts


TARGET = ChSwichEn
TEMPLATE = app


SOURCES += main.cpp\
        ChSwichEn.cpp

HEADERS  += ChSwichEn.h

FORMS    += ChSwichEn.ui

.h:

#ifndef CHSWICHEN_H
#define CHSWICHEN_H

#include <QWidget>

#include <QTranslator>//所需头文件
#include <QApplication>

namespace Ui {
class ChSwichEn;
}

class ChSwichEn : public QWidget
{
    Q_OBJECT

public:
    explicit ChSwichEn(QWidget *parent = 0);
    ~ChSwichEn();

private slots:
    /**
     * @brief on_pushButton_ch_clicked  中文槽函数
     */
    void on_pushButton_ch_clicked();

    /**
     * @brief on_pushButton_en_clicked  英文槽函数
     */
    void on_pushButton_en_clicked();

private:
    Ui::ChSwichEn *ui;
    QTranslator m_Trans;//创建对象
};

#endif // CHSWICHEN_H

.cpp:

#include "ChSwichEn.h"
#include "ui_ChSwichEn.h"

ChSwichEn::ChSwichEn(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::ChSwichEn)
{
    ui->setupUi(this);
}

ChSwichEn::~ChSwichEn()
{
    delete ui;
}

void ChSwichEn::on_pushButton_ch_clicked()
{
    bool flage = m_Trans.load("D:/QtApp/ChSwichEn/RESOURCES/tr_zh.qm");
    qApp->installTranslator(&m_Trans);
    ui->retranslateUi(this);
}

void ChSwichEn::on_pushButton_en_clicked()
{
    bool flage = m_Trans.load("D:/QtApp/ChSwichEn/RESOURCES/tr_en.qm");
    qApp->installTranslator(&m_Trans);
    ui->retranslateUi(this);
}

其他类实现切换方法:

void changeEvent(QEvent *event);

void Test::changeEvent(QEvent *event)
{
    if(event->type() == QEvent::LanguageChange){
        this->ui->retranslateUi(this);
    }
}

实现功能过程截图:

1
2
3
4

over:

欢迎大家关注作者在文末评论、点赞、转发以及批评指正!
如果大家有更好的方法或有问题可以在文末评论一起讨论!
共同学习!
共同进步!

文末一句话:

最近流感比较严重,大家尽量少去人多的地方,可以适当喝点烈酒,在这里感谢在抗战一线的白衣天使,你们辛苦了!

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐