QT多国语言测试程序

#QT笔记#

项目需要刚转QT没多久,很多东西不太熟悉,需要自己摸索~~


QT4.7以下自带的小工具对中文支持没那么,特别是翻译工具,在linguist里面全是乱码问题,所以一般来说:


重要的事情说三遍!!!!!


先做英文版,整个代码里,不要写任何中文字符串常量

先做英文版,整个代码里,不要写任何中文字符串常量

先做英文版,整个代码里,不要写任何中文字符串常量


最后再制作其他语言,不然到时候一堆乱码够你郁闷的~~


qt多语言的好处是将语言文件与源码UI完全分开,如果有更改只需要lupdate一下就行了,之前翻译的不会有影响,这一点比较好


还有个深坑:pro文件不要指定任何编码,否则你就白翻译了~~


写下博客记录下学习笔记吧!


QT不同于MFC的变量关联和消息映射,QT里叫信号和连接槽,直接编译出来cpp数组类似查表


在这里拦截UI改变多语言的事件,主窗口需要重新绘制:


protected:
    void changeEvent(QEvent* event);


在这个函数里面需要自己手动更新当前窗口(或主窗口)的文字,


主界面有三个按钮,以下为测试程序源码:

#include "mainwindow.h"
#include "ui_mainwindow.h"

QTranslator appTranslator;

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

    connect(ui->pushButton_ch, SIGNAL(clicked()), this, SLOT(ClickButtonCh()));
    connect(ui->pushButton_en, SIGNAL(clicked()), this, SLOT(ClickButtonEn()));
    connect(ui->pushButton_msg, SIGNAL(clicked()), this, SLOT(ClickButtonMsg()));

    ClickButtonEn();
    return ;
}

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

void MainWindow::ClickButtonMsg()
{
    QMessageBox msg(QMessageBox::Warning,tr("Title"),tr(""),
                    0,this,Qt::Dialog | Qt::MSWindowsFixedSizeDialogHint);
    msg.addButton(tr("OK"),QMessageBox::AcceptRole);

    msg.setText(tr("Mul language test."));
    msg.exec();
}


void MainWindow::ClickButtonCh()
{
    appTranslator.load ("ch",".");
    QApplication::instance()->installTranslator(&appTranslator);
}

void MainWindow::ClickButtonEn()
{
    appTranslator.load ("en",".");
    QApplication::instance()->installTranslator(&appTranslator);
}

void MainWindow::retranslate()
{
    ui->pushButton_ch->setText(QString(tr("中文语言")));
    ui->pushButton_en->setText(QString(tr("英文语言")));
    ui->pushButton_msg->setText(QString(tr("消息框")));
}

void MainWindow::changeEvent(QEvent* event) {
        if(event->type() == QEvent::LanguageChange) {
            retranslate();
        } else
            QWidget::changeEvent(event);
}


制作多语言的时候,需要在pro工程文件末尾追加:

TRANSLATIONS  = En.ts
TRANSLATIONS  = Ch.ts



1、先打开控制台输入lupdate Test.pro
 
      将会自动生成Ch.ts和En.ts两个(如果要加更多在Test.pro里改)


2、再用linguist打开ts文件,分别输入翻译内容


3、再打开控制台输入lrelease Test.pro即可生成exe需要的.qm文件


测试效果:



qt4.7工程源码下载

http://download.csdn.net/detail/wangningyu/9687082




猜你喜欢

转载自blog.csdn.net/wangningyu/article/details/53224552