当前位置: 首页 > news >正文

Qt 实现分割窗口并国际化

哈尔滨理工大学软件工程专业08-7李万鹏原创作品,转载请标明出处

http://blog.csdn.net/woshixingaaa/archive/2010/08/10/5802312.aspx

Qt中提供了QSqlitter类实现分割窗口,分割窗口可以灵活分布窗口的布局,经常用于类似文件管理器的窗口设计中。Qt中提供QTranslator类和QLinguist工具进行国际化。本实例实现一个分割窗口,并国际化。

国际化前 国际化后

创建QSlitter的对象, 首先是横向的主分割窗口(Qt::Horizontal),再创建一个右部分割窗口(Qt::Vertical),然后将3个QTextEdit对象装进各个窗口中,setAlignment()方法用来设定QTextEdit中文字的对齐方式。

Qt::AlignLeft:左对齐

Qt::AlignRight:右对齐

Qt::AlignCenter:文字居中

Qt::AlignUp:文字与顶端对齐

Qt::AlignBottom:文字与底部对齐

setOpaqueResize(bool)用来设定分割窗口的分割条移动时是否是实时更新显示,若设为true则实时更新显示,若设为false则在拖动时只显示一条灰色的粗线条。setStretchFactor()方法用于设定可伸缩控件,它的第一个参数指定设置的控件序号,控件序号按插入的先后次序从0起依次编号,第二个参数大于0表示此控件为可伸缩控件,当整个对话框的宽度发生变化时,左部的文本编辑框宽度保持不变,右部的分割框宽度随整个对话框大小的改变进行调整。

#include <QApplication> #include <QSplitter> #include <QTextEdit> #include <QTranslator> int main(int argc, char *argv[]){ QApplication app(argc,argv); QTranslator qtTranslator; qtTranslator.load("9.qm"); app.installTranslator(&qtTranslator); QSplitter * mainSplitter = new QSplitter(Qt::Horizontal,0); QTextEdit * e1 = new QTextEdit(QObject::tr("left window"),mainSplitter); e1->setAlignment(Qt::AlignCenter); QSplitter * rightSplitter = new QSplitter(Qt::Vertical,mainSplitter); rightSplitter->setOpaqueResize(false); QTextEdit * e2 = new QTextEdit(QObject::tr("top window"),rightSplitter); e2->setAlignment(Qt::AlignCenter); QTextEdit * e3 = new QTextEdit(QObject::tr("bottom window"),rightSplitter); e3->setAlignment(Qt::AlignCenter); mainSplitter->setStretchFactor(1,1); mainSplitter->show(); return app.exec(); }

下面开始国际化,所谓国际化,不仅仅是将界面上的各种文字翻译成另外的语言,还有一些是要进行书写方式和货币等的转化。比如,阿拉伯书写时从右向左的,这些在国际化中是必须完成的。

首先,我们要在pro中增加一行

TRANSLATIONS += myApp.ts

myApp.ts是要创建的翻译文件,这个名字是任意的,不过后缀名需要的是ts。然后我们打开命令提示符,进入工程所在目录,也就是我的目录 Qt/9,然后输入

lupdate 9.pro

如果出现如下效果,说明ts文件创建成功

最后一行是说3个需要翻译,0个已经存在,也就是说,这个文件是新建的。你可以在工程中找到这个ts文件,可以用记事本打开这个文件,这个文件实际上是一个XML文件。我们用专业的工具Linguist打开ts文件。

然后进行翻译工作,完成翻译后保存。然后菜单下有个发布,点击它,工程文件夹下会有个myApp.qm文件,这就是我们翻译得到的文件,Qt 的qm文件是二进制格式的,因此他经过了高度优化,体积很小。再看一下这段代码:

QTranslator qtTranslator; qtTranslator.load("myApp.qm"); app.installTranslator(&qtTranslator);

首先创建一个QTranslator的对象,然后加载qm文件,也就是那个我们翻译后得到的二进制文件,然后把这个对象安装到QApplication中,重新编译,哈哈,大功告成。到此为止,如果觉得好请鼓励以下,不容易阿。

相关文章:

  • 【问题和解决】python中nltk与nltk_contrib的关系
  • 程序员十层楼
  • Keychain Services Concepts
  • 评教模块编码结束--项目感受
  • 开始写点东西。
  • Ubuntu不得不分享的24条使用经验
  • 通过使用具备mmap技术的libpcap提高libnids的性能
  • 谈谈代码健壮性之极限值处理(防御性编程)
  • GIServer 下个版本(2.1)中将包含一个GUI的切图工具
  • 一段简单的CSS Tab标签切换代码
  • 千万千万不要运行的Linux命令
  • Sftp和ftp 区别、工作原理等(汇总ing)
  • 浅谈程序员如何正确面对压力—Leo网上答疑41-2
  • [bbk5179]第66集 第7章 - 数据库的维护 03
  • 【转载】C++程序设计之四书五经/C++学习书籍介绍
  • 【Leetcode】101. 对称二叉树
  • 【译】理解JavaScript:new 关键字
  • AngularJS指令开发(1)——参数详解
  • Bytom交易说明(账户管理模式)
  • CODING 缺陷管理功能正式开始公测
  • ES6系统学习----从Apollo Client看解构赋值
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • Java的Interrupt与线程中断
  • PAT A1017 优先队列
  • spark本地环境的搭建到运行第一个spark程序
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 大型网站性能监测、分析与优化常见问题QA
  • 关于字符编码你应该知道的事情
  • 前端技术周刊 2019-01-14:客户端存储
  • 实现菜单下拉伸展折叠效果demo
  • 数组大概知多少
  • 小程序 setData 学问多
  • 一些关于Rust在2019年的思考
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • # 手柄编程_北通阿修罗3动手评:一款兼具功能、操控性的电竞手柄
  • ###C语言程序设计-----C语言学习(3)#
  • $jQuery 重写Alert样式方法
  • (C语言)共用体union的用法举例
  • (TOJ2804)Even? Odd?
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (十八)SpringBoot之发送QQ邮件
  • (轉貼) UML中文FAQ (OO) (UML)
  • . Flume面试题
  • .[backups@airmail.cc].faust勒索病毒的最新威胁:如何恢复您的数据?
  • .NET Core WebAPI中使用Log4net 日志级别分类并记录到数据库
  • .net core使用ef 6
  • .NET 中 GetProcess 相关方法的性能
  • .pings勒索病毒的威胁:如何应对.pings勒索病毒的突袭?
  • /bin/bash^M: bad interpreter: No such file or directory
  • [ element-ui:table ] 设置table中某些行数据禁止被选中,通过selectable 定义方法解决
  • [BetterExplained]书写是为了更好的思考(转载)
  • [BZOJ] 3262: 陌上花开
  • [C/C++] C/C++中数字与字符串之间的转换
  • [codevs 2822] 爱在心中 【tarjan 算法】
  • [Electron]ipcMain.on和ipcMain.handle的区别