利用qt語言家顯示中文

以前在代碼裏使用了包含漢字的字符串,往往顯示在界面上就變得不正常。儘管QString::fromLocal8Bit()函數有時能解決問題,但不是總能成功。這篇博客介紹一種更可靠的辦法--利用qt語言家來顯示中文。

qt語言家翻譯原理如下:把代碼中想要翻譯爲漢語的字符串,用tr()函數包含起來。這些字符串應該是由字母、數字等普通字符組成的。在qt工程中建立ts文件。這個文件統計出所有被tr()函數標記的字符串。然後用qt語言家軟件讀取ts文件中所有的內容,並在語言家的界面中逐個進行英漢翻譯。翻譯結果保存於qm文件裏。程序運行時,將自動讀取qm文件,並完成翻譯。

1)在pro文件中加入TRANSLATIONS變量:

#-------------------------------------------------
#
# Project created by QtCreator 2020-04-12T13:51:37
#
#-------------------------------------------------

QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

TARGET = language
TEMPLATE = app


SOURCES += main.cpp\
        mainwindow.cpp

HEADERS  += mainwindow.h
TRANSLATIONS += lingst.ts

等號右邊的是ts文件的文件名。

在qt的菜單欄上選擇“工具”-“外部”-“Qt語言家”-“更新翻譯”。在pro文件的同級文件夾下將出現lingst.ts文件。

2)完成cpp代碼

main.cpp,注意QTranslator的用法

#include "mainwindow.h"
#include <QApplication>
#include <QTranslator>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    QTranslator trans;
    trans.load("lingst");//注意,此處不要.ts後綴
    a.installTranslator(&trans);
    MainWindow w;
    w.show();

    return a.exec();
}

mainwindow.cpp。注意tr()函數的用法

#include "mainwindow.h"

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
{
    setWindowTitle(QObject::tr("I love programming"));
}

MainWindow::~MainWindow()
{

}

3)用qt 語言家軟件(從 開始菜單\Qt\中找)打開ts文件。

在MainWindow.cpp中找到待翻譯的短語,進行翻譯。你將看到短語前面有一個問號:

點擊這個文問號,它變爲綠色的對號,說明翻譯完成了。保存文件。

4)點擊菜單欄 文件>>發佈。qm文件將生成。

5)編譯工程,然後將qm文件放到exe文件的同級路徑下。運行程序,觀察結果。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章