Qt国际化语言和qss的应用实例

一、国际化语言的应用步骤(实现中英文切换,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);
    }

5、中文切换
 
  
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();
}

二、qss样式设计应用
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

widget.cpp
#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"));

}

main.cpp
#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 +=

test.qss
 
  
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;
}



你可能感兴趣的:(Qt)