Qt笔记——多国语言转换(手动)

目录

仅列出测试代码,需要使用linguist进行手动转换;

langSwitch,pro

widget.cpp

widget.h


仅列出测试代码,需要使用linguist进行手动转换;

langSwitch,pro

TRANSLATIONS = lang_en.ts\
               lang_zh.ts\
               lang_la.ts

widget.cpp

#include "widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
{
    createScreen();//创建界面
}

Widget::~Widget()
{

}

void Widget::createScreen(){
    //布局设计
    combo = new QComboBox;
    combo->addItem("English","en");
    combo->addItem("Chinese","zh");
    combo->addItem("Latin","la");//拉丁文
    label = new QLabel;
    refreshLabel();
    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(combo,1);
    layout->addWidget(label,5);
    setLayout(layout);
    connect(combo,SIGNAL(currentIndexChanged(int)),this,SLOT(changeLang(int)));

}

void Widget::changeLang(int index){
    QString langCode = combo->itemData(index).toString();//读取下来菜单栏所对应的值
    changeTr(langCode);//翻译语言
    refreshLabel();//刷新文字
}

//翻译改变语言
void Widget::changeTr(const QString &langCode){
    static QTranslator *translator;
    if(translator !=NULL){
        qApp->removeTranslator(translator);
        delete translator;
        translator = NULL;
    }
    translator = new QTranslator;
    QString qmFilename = "lang_"+langCode;//设定.qm文件路径
    if(translator->load(QString("D:/Qt_exe/LangSwitch/")+qmFilename)){
        qApp->installTranslator(translator);
    }
}

//刷新文字
void Widget::refreshLabel(){
    label->setText(tr("TXT_HELLO_WORLD","Hello World"));
}

widget.h

#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QComboBox>
#include <QLabel>
#include <QTranslator>
#include <QApplication>
#include <QVBoxLayout>

class Widget : public QWidget
{
    Q_OBJECT

public:
    Widget(QWidget *parent = nullptr);
    ~Widget();

private slots:
    void changeLang(int index);//响应下拉菜单中语言栏的改变

private:
    void createScreen();//创建界面
    void changeTr(const QString &langCode);//翻译改变语言
    void refreshLabel();

    QComboBox *combo;
    QLabel *label;
};

#endif // WIDGET_H

手动转换方法有点烦,其他博客上有很多自动转换的方法。。。有空再玩

发布了287 篇原创文章 · 获赞 297 · 访问量 12万+

猜你喜欢

转载自blog.csdn.net/qq_41895747/article/details/104110229