一、国际化语言的应用步骤(实现中英文切换,Qt环境是qt-opensource-windows-x86-msvc2013-5.5.0.exe)
1、创建翻译文件
在工程文件.pro中加入
TRANSLATIONS +=cn.ts en.ts
cn.ts用作翻译中文 en.ts用作英文翻译(名字可以自己取)
在Qt creater中点
工具->外部->Qt语言之家->更新翻译
会在工程目录下生成cn.ts和en.ts文件
2、编辑翻译文件
使用Linguist(Qt语言家)打开cn.ts和en.ts,然后进行编辑,最后保存
3、部署翻译文件
工具->外部->Qt语言之家->发布翻译
会在工程目录生成cn.qm和en.qm
4、加载翻译文件
QApplication a(argc, argv);
QTranslator *translator=new QTranslator;
bool rt=false;
rt=translator->load(":cn.qm");
//rt=translator->load(":en.qm");
if(rt)
{
a.installTranslator(translator);
}
void Widget::translation_to_chinese()
{
translator01=new QTranslator(qApp);
translator01->load(":cn.qm");
qApp->installTranslator(translator01);
setString();
}
void Widget::translation_to_enlish()
{
translator02=new QTranslator(qApp);
translator02->load(":en.qm");
qApp->installTranslator(translator02);
setString();
}
1、创建qss文件
在工程目录下新建带.qss文件,如test.qss
创建Qt资源文件,将test.qss加入资源文件中2、编辑样式表
打开test.qss文件,编辑样式表,最后保存
例如:
QPushButton#button01{
border-radius:5px;
background-color:#CEA5F3;
color:white;
}
3、加载qss文件
在main.cpp文件加如下代码:
QFile qss(":test.qss");
qss.open(QFile::ReadOnly);
a.setStyleSheet(qss.readAll());
下面附上实例供参考:
工程目录文件
工程
widget.h
#ifndef WIDGET_H
#define WIDGET_H
#include
#include
#include
#include
using namespace std;
namespace Ui {
class Widget;
}
class Widget : public QWidget
{
Q_OBJECT
public:
explicit Widget(QWidget *parent = 0);
~Widget();
void setString();
void translation_to_chinese();
void translation_to_enlish();
private:
Ui::Widget *ui;
QTranslator *translator01;
QTranslator *translator02;
QPushButton *btn;
QPushButton *btn01;
};
#endif // WIDGET_H
#include "widget.h"
#include "ui_widget.h"
#include "QPushButton"
#include "QString"
#include "QTranslator"
#include "QIcon"
Widget::Widget(QWidget *parent) :
QWidget(parent),
ui(new Ui::Widget)
{
ui->setupUi(this);
setWindowFlags(Qt::CustomizeWindowHint | Qt::WindowCloseButtonHint);
setWindowIcon(QIcon(":images/title.ico"));
this->setObjectName("mainWidget");
btn=new QPushButton(this);
btn->setObjectName("button");
btn->setFixedSize(75,30);
btn->move(200,10);
btn01=new QPushButton(this);
btn01->setObjectName("button01");
btn01->setFixedSize(75,30);
btn01->move(100,10);
setString();
connect(btn,&QPushButton::clicked,this,&Widget::translation_to_chinese);
connect(btn01,&QPushButton::clicked,this,&Widget::translation_to_enlish);
}
Widget::~Widget()
{
delete ui;
}
void Widget::translation_to_chinese()
{
translator01=new QTranslator(qApp);
translator01->load(":cn.qm");
qApp->installTranslator(translator01);
setString();
}
void Widget::translation_to_enlish()
{
translator02=new QTranslator(qApp);
translator02->load(":en.qm");
qApp->installTranslator(translator02);
setString();
}
void Widget::setString()
{
btn->setText(tr("ok"));
btn01->setText(tr("cancel"));
setWindowTitle(tr("title"));
}
#include "widget.h"
#include
#include
#include
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QTranslator *translator=new QTranslator;
bool rt=false;
rt=translator->load(":cn.qm");
//rt=translator->load(":en.qm");
if(rt)
{
a.installTranslator(translator);
}
QFile qss(":test.qss");
qss.open(QFile::ReadOnly);
a.setStyleSheet(qss.readAll());
Widget w;
w.show();
return a.exec();
}
test03.pro
#-------------------------------------------------
#
# Project created by QtCreator 2017-06-29T15:32:36
#
#-------------------------------------------------
QT += core gui
TRANSLATIONS +=cn.ts en.ts
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
TARGET = test03
TEMPLATE = app
SOURCES += main.cpp\
widget.cpp
HEADERS += widget.h
FORMS += widget.ui
RESOURCES += \
src.qrc
DISTFILES +=
QWidget#mainWidget{
background-color:#B7E1E1;
}
QPushButton#button,
QPushButton#button01{
border-radius:5px;
background-color:#CEA5F3;
color:white;
}
QPushButton#button:pressed,
QPushButton#button01:pressed{
padding-top:2px;
}