qt:界面语言动态切换

File : lang.h 主要程序 (直接右键另存为下载)
File : main.cpp (直接右键另存为下载)
File : lang.pro (直接右键另存为下载)
File : en.qm (直接右键另存为下载)
File : zh.qm (直接右键另存为下载)
Type : qt
Brief : Qt界面语言动态切换,以一个Button为例,文件有点多。


  • 要点:要做动动态切换语言,从load(qm) -> install translator -> set text,一步都不能少。
// lang.h
#include <QApplication>
#include <QMainWindow>
#include <QPushButton>
#include <QTranslator>
class LangUi : public QObject
{
    Q_OBJECT
public:
    void setupUi(QMainWindow* pa)
    {
        this->setParent(pa);
        this->btn = new QPushButton(pa);
        this->setTranslator();
    }

    void setTranslator()
    {
        this->btn->setText(tr("Toggle"));
    }
    QPushButton* btn;
};

class Lang : public QMainWindow
{
    Q_OBJECT
public:
    Lang(QWidget *parent = 0): QMainWindow(parent), ui(new LangUi()), trans(new QTranslator())
    {
        ui->setupUi(this);
        lang = 0;
        connect(this->ui->btn, &QPushButton::clicked, 
                [this]{
                    if (0 == lang)
                    {
                        lang = 1;
                        trans->load("zh.qm");
                    }
                    else if(1 == lang)
                    {
                        lang = 0;
                        trans->load("en.qm");
                    }
                    qApp->installTranslator(trans);
                    this->ui->setTranslator();
                });
    }
    ~Lang(){}
private:
    LangUi* ui;
    QTranslator* trans;
    int lang;
};



转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 [ yehuohan@gmail.com ]

文章标题:qt:界面语言动态切换

本文作者:Y

发布时间:2017-09-29, 21:18:18

最后更新:2019-05-21, 20:09:53

原始链接:http://yehuohan.github.io/2017/09/29/Gist/qt/Qt%E7%95%8C%E9%9D%A2%E8%AF%AD%E8%A8%80%E5%8A%A8%E6%80%81%E5%88%87%E6%8D%A2/

版权声明: "署名-非商用-相同方式共享 4.0" 转载请保留原文链接及作者。