Qt学习笔记--动态切换语言
来源:互联网 发布:单片机lcd显示必须是 编辑:程序博客网 时间:2024/05/21 15:02
转自:
//编译运行
lupdate switchlang.pro
lrelease switchlang.pro
qmake
make
dipperkun的博客
http://hi.baidu.com/jiangbeidou/blog/item/b2adedf1d66cfea6a50f5253.html
在编写国际化程序的时候,很多情况下都是在系统启动的过程中选择语言,然后加载对应的地方语言翻译文件,实现语言的本地化。
但是也会有用户需要进行动态的语言切换(Dynamic Language Switching),也就是在程序主体都运行起来后,需要改变语言的选项。而用户不希望因为语言切换而引起程序的重启或者窗口的关闭。
Qt的国际化设计提供了这种可能。要实现这种动态切换,只需要在程序里使用一点小小的技巧,就是把调用了Qt翻译语句tr的代码集中在某个和窗体变化无关的函数里,比如retranslateStrings()这样的函数里。在改变语言的时候,调用这个函数就可以了。
例子:
//dialog.h#ifndef DIALOG_H#define DIALOG_H#include <QDialog>class QLabel;class QPushButton;class Dialog : public QDialog{ Q_OBJECTpublic: Dialog(QWidget *parent = 0);private: QLabel *label; QPushButton *okButton; int flag;private slots: void retranslateStrings(); void switchLang();};#endif//dialog.cpp#include <QtGui>#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 <QApplication>#include "dialog.h"int main(int argc, char *argv[]){ QApplication app(argc, argv); Dialog dialog; dialog.show(); return app.exec();}//switchlang.proTEMPLATE = appTARGET =DEPENDPATH += .INCLUDEPATH += .# InputHEADERS += dialog.hSOURCES += dialog.cpp main.cpp# 翻译文件TRANSLATIONS += switchlang_zh.ts
//编译运行
lupdate switchlang.pro
lrelease switchlang.pro
qmake
make
- Qt学习笔记--动态切换语言
- Qt动态语言切换
- Qt语言动态切换
- Qt动态切换语言
- Qt动态语言的切换
- Qt之动态语言切换
- Qt实现动态切换语言
- Qt之动态语言切换
- Qt实现动态切换语言
- Qt之动态语言切换
- QT的动态语言切换
- qt多国语言及其动态切换的学习笔记
- Qt国际化之动态语言切换
- QT实现动态翻译和语言切换
- QT实现动态翻译和语言切换
- Qt之国际化--多语言动态切换
- QT多窗口语言动态切换
- QT学习笔记----窗口的相互切换
- dcm4che
- 安装vmware8.01后,xp下PS/2键盘及鼠标无效的解决
- 软件工程之操作契约
- c#如何使用 Debug 和 Trace 类
- MFC基于对话框的ActiveX
- Qt学习笔记--动态切换语言
- MyEclipse10安装jBPM5的方法
- Android智能指针sp wp详解
- 2011/11/06~2012/02/12
- 解决软键盘弹出,会把原来的界面挤上去的问题?
- GetBuffer与ReleaseBuffer
- 孩子:爸爸妈妈你们离婚吧
- USB OTG简介
- RGB对应YUV算法