Qt GUI设计 界面语言动态切换(2)
来源:互联网 发布:4000公里高铁 知乎 编辑:程序博客网 时间:2024/06/07 00:30
接着上次做的语言切换
上次实现了语言动态切换,但是并不能保存,就是下次打开时语言又会恢复成原来的
这次程序中加入语言配置文件,每次语言修改会记录保存,下次打开时语言就是上次保存的。
代码如下
#include "dialog.h"
#include "ui_dialog.h"
#include <QDebug>
#include <QTranslator>
#include <iostream>
#include <QtCore>
Dialog::Dialog(QWidget *parent) :
QDialog(parent),
ui(new Ui::Dialog)
{
ui->setupUi(this);
this->setWindowTitle(tr("hello translator"));
connect(this->ui->pushButton_2,SIGNAL(clicked()),this,SLOT(close()));
connect(this->ui->comboBox,SIGNAL(activated(int)),SLOT(switchlanguage(int)));
connect(this->ui->pushButton_chinese,SIGNAL(clicked()),SLOT(to_chinese()));
connect(this->ui->pushButton_english,SIGNAL(clicked()),this,SLOT(to_english()));
}
Dialog::~Dialog()
{
delete ui;
}
void Dialog::switchlanguage(int flag)
{
qDebug("flag=%d",flag);
QTranslator translator(qApp);
bool b = false;
if(flag==0)
{
//chinese
b = translator.load("hellotr_CH.qm");
if(b==false)
qDebug("load err!");
else
qDebug("chinese load ok");
qApp->installTranslator(&translator);
this->ui->retranslateUi(this);
QFile file("language_set.txt");
if (file.open(QFile::WriteOnly)){
QTextStream out(&file);
out<<"hellotr_CH.qm";
file.close();
}
}
else if(flag==1)
{
// english
b = translator.load("hellotr_EN.qm");
if(b==false)
{
qDebug("load err!");
}
else
{
qDebug("english load ok");
qApp->installTranslator(&translator);
this->ui->retranslateUi(this);
QFile file("language_set.txt");
if (file.open(QFile::WriteOnly)){
QTextStream out(&file);
out<<"hellotr_EN.qm";
file.close();
}
}
}
}
void Dialog:: to_chinese(void)
{
qDebug("to chinese clicked");
QTranslator translator(qApp);
bool b = false;
b = translator.load("hellotr_CH.qm");
if(b==false)
qDebug("load err!");
else
{
qDebug("chinese load ok");
qApp->installTranslator(&translator);
this->ui->retranslateUi(this);
this->ui->comboBox->setCurrentIndex(0);
QFile file("language_set.txt");
if (file.open(QFile::WriteOnly)){
QTextStream out(&file);
out<<"hellotr_CH.qm";
file.close();
}
}
}
void Dialog::to_english(void)
{
qDebug("to_english clicked");
QTranslator translator(qApp);
bool b = false;
b = translator.load("hellotr_EN.qm");
if(b==false)
qDebug("load err!");
else
{
qDebug("english load ok");
qApp->installTranslator(&translator);
this->ui->retranslateUi(this);
this->ui->comboBox->setCurrentIndex(1);
QFile file("language_set.txt");
if (file.open(QFile::WriteOnly)){
QTextStream out(&file);
out<<"hellotr_EN.qm";
file.close();
}
}
}
#include <QtGui/QApplication>
#include "dialog.h"
#include <QTranslator>
#include <QDebug>
#include <QTextCodec>
#include <iostream>
#include <QtCore>
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
QFile file("language_set.txt");
QString language;
if(file.open(QFile::ReadOnly))
{
QTextStream in(&file);
in>>language;
qDebug("language=%s",qPrintable(language));
}
QTranslator translator(0);
bool b = false;
b = translator.load(language);
if(b==false)
qDebug("load err!");
else
qDebug("load ok");
a.installTranslator(&translator);
Dialog w;
w.show();
return a.exec();
}
- Qt GUI设计 界面语言动态切换(2)
- Qt GUI设计 界面语言动态切换(1)
- Qt动态语言切换
- Qt语言动态切换
- Qt动态切换语言
- qt creator 切换到界面语言(切换到英语)
- Qt动态语言的切换
- Qt之动态语言切换
- Qt实现动态切换语言
- Qt之动态语言切换
- Qt实现动态切换语言
- Qt之动态语言切换
- QT的动态语言切换
- Qt实用技巧:在Qt Gui程序中嵌入qml界面(可动态覆盖整个窗口)
- Qt多语言实现和动态切换(国际化)
- Qt国际化之动态语言切换
- QT实现动态翻译和语言切换
- QT实现动态翻译和语言切换
- android开发面试题
- linux下C语言中的flock函数用法 .
- Linux中单引号双引号反引号的区别与应用
- UVa 10098 - Generating Fast
- 理解 Git 的工作流程(英文版)
- Qt GUI设计 界面语言动态切换(2)
- Android 开发之 Toast (弹出提示框)
- 查看相关的版本
- UVa 10341-Solve It
- clearcase pwv
- 甲骨文收购Xsigo以对抗思科和VMware
- 观察者模式(Observer Pattern)
- UVa 10340 - All in All
- Android 一些默认设置