Qt 4学习笔记--动态切换语言
来源:百度文库 编辑:神马文学网 时间:2024/07/03 09:40:21
Qt 4学习笔记--动态切换语言2009-08-09 17:17
在编写国际化程序的时候,很多情况下都是在系统启动的过程中选择语言,然后加载对应的地方语言翻译文件,实现语言的本地化。
但是也会有用户需要进行动态的语言切换(Dynamic Language Switching),也就是在程序主体都运行起来后,需要改变语言的选项。而用户不希望因为语言切换而引起程序的重启或者窗口的关闭。
Qt的国际化设计提供了这种可能。要实现这种动态切换,只需要在程序里使用一点小小的技巧,就是把调用了Qt翻译语句tr的代码集中在某个和窗体变化无关的函数里,比如retranslateStrings()这样的函数里。在改变语言的时候,调用这个函数就可以了。
例子:
//dialog.h
#ifndef DIALOG_H
#define DIALOG_H
#include
class QLabel;
class QPushButton;
class Dialog : public QDialog
{
Q_OBJECT
public:
Dialog(QWidget *parent = 0);
private:
QLabel *label;
QPushButton *okButton;
int flag;
private slots:
void retranslateStrings();
void switchLang();
};
#endif
//dialog.cpp
#include
#include "dialog.h"
Dialog::Dialog(QWidget *parent)
: QDialog(parent)
{
label = new QLabel;
okButton = new QPushButton;
connect(okButton, SIGNAL(clicked()), this, SLOT(switchLang()));
flag = 0;
retranslateStrings();
QVBoxLayout *mainLayout = new QVBoxLayout;
mainLayout->addWidget(label);
mainLayout->addWidget(okButton);
setLayout(mainLayout);
}
//tr()相关的语句
void Dialog::retranslateStrings()
{
label->setText(tr("Name:"));
okButton->setText(tr("Switch Language"));
setWindowTitle(tr("Switch Language ..."));
}
//切换语言
void Dialog::switchLang()
{
QTranslator translator;
if (0==flag) {
translator.load("switchlang_zh");
flag=1;
} else {
flag=0;
}
qApp->installTranslator(&translator);
retranslateStrings();
}
//main.cpp
#include
#include "dialog.h"
int main(int argc, char *argv[])
{
QApplication app(argc, argv);
Dialog dialog;
dialog.show();
return app.exec();
}
//switchlang.pro
TEMPLATE = app
TARGET =
DEPENDPATH += .
INCLUDEPATH += .
# Input
HEADERS += dialog.h
SOURCES += dialog.cpp main.cpp
# 翻译文件
TRANSLATIONS += switchlang_zh.ts
//编译运行
lupdate switchlang.pro
lrelease switchlang.pro
qmake
make
Qt 4学习笔记--动态切换语言
C语言学习笔记
WebKit 学习笔记(5) -- qt javascript 扩展 - 浏览器研究 - ...
动态语言切换(续)-designer中的retranslateUi(带源码)
C语言学习笔记(链接)
动态链接库学习笔记
NekoHTML学习笔记4
英语学习笔记4
我的Dll(动态链接库)学习笔记
用动态gif使个人主页背景图动起来-学习笔记
《月儿笔记》十一、新的图片切换 -
《月儿笔记》十二、旋转切换图片 -
英语学习笔记4hao
Flash builder 4 学习笔记
动态切换图片的JavaScript的代码
学习笔记
学习笔记
学习笔记
笔记 HTML 语言 Sample1
视听语言课堂笔记
学习C语言的必备基础知识 - 笔记 - 徐名峰 - CSDN学生大本营 - Powered...
分布式、并行计算语言Erlang 学习笔记(第一部分) — Windows Live
语言学习
ajax学习笔记一:动态更改div位置 - 博客文章 - 博客园知识库