qt界面模板.docx
- 文档编号:10603601
- 上传时间:2023-02-21
- 格式:DOCX
- 页数:12
- 大小:23.45KB
qt界面模板.docx
《qt界面模板.docx》由会员分享,可在线阅读,更多相关《qt界面模板.docx(12页珍藏版)》请在冰豆网上搜索。
qt界面模板
竭诚为您提供优质文档/双击可除
qt,界面模板
篇一:
基于qt的1ton保护界面平台设计
基于qt的1ton保护界面设计
杨永标,成海生
(国电南瑞科技股份有限公司,江苏省南京市210003)
(naRitechnologydevelopmentlimitedcompany,nanjing210003,china)
摘要:
qt作为图形用户接口和应用开发而定制的c++软件开发包,由于其跨平台性和易移植
性,得到了越来越多的应用。
本文介绍了采用嵌入式qt开发了基于iec61850数字化
1ton保护界面。
给出如何利用qt进行保护界面架构的设计、功能模块的设计及使用
unicode进行汉字的显示。
结论证实qt在基于powerpc8270硬件平台linux操作系
统下运行性能良好,图形显示效果令人满意。
关键词:
qt;1ton保护界面;模块设计;unicode
abstract:
qtasc++softwarekitiscustomiziedbygraphuserinterfaceand
applicationdevelopwhichisapplyingmoreandmoreforitsexceedingflat
andtransplantingeasily.thispaperintroducedevelopingthedigitalseries
1tonprotectinterfacebaseoniec61850byembeddedqt.andpresentedhow
todesignprotectinterfaceframeandfunctionmoduleandbyqt.alsothe
chinesecharactersshowingbyusingunicodeinqt.theresultprovedthatqt
runperformaceisgoodinlinuxoperationbaseonpowerpc8270harewareplat,the
graphdisplayeffectissatefied.
keywords:
qt;1tonprotectinterface;moduledesign;unicode
0引言
图形界面已经成为电力系统软件的一个重要组成部分。
通过图形界面展示发布信息和数
据,进行交换操作,方便快捷而且直观。
微机保护测控装置的数据、信息显示经历了最早的数码管或者打印机显示,到后来普通字符、点阵液晶的字符或汉字显示,到现在彩色液晶的图形、汉字的综合显示。
近年来,电力系统用户对图形界面显示的要求越来越高。
目前的国内绝大多数主流厂家在高压保护、测控装置或故障录波器等产品中采用了图形界面显示,由于其美观且方便用户操作,功能全面,受到了广大用户的喜爱和推崇。
嵌入式qt(以下简称qt)是一个为嵌入式设备上的图形用户接口和应用开发而定制的
c++工具软件开发包,如果有嵌入式linux操作系统支持,它可以运行在多种不同的处理器体系上,例如:
intelx86,aRm,mips,powerpc等。
它为在嵌入式设备上开发应用程序提供了标准的api函授,而且这些api函数都是单一的,在不同平台下都是用相同api函数,方便在不同体系结构下进行代码移植。
qt专门为小型设备提供图形用户界面的应用框架和窗口系统。
提供了丰富的窗口小部件,并且还支持窗口部件的定制,因此它可以为用户提供漂亮的图形界面
1ton保护装置是国电南瑞为河北承德西地110kV变电站工程中开发的基于iec61850标准的多条线路保护测控一体化装置的简称。
它是国电南瑞和河北承德西地用户为实现基于iec61850标准的集中式线路保护,在降低成本和提高装置可靠性上做的一次有益的探索。
采用双机冗余,高速adsp-bF533和强大的powerpc8270集中管理多条线路的保护和测控功能,同时负责液晶显示和iec61850数据、信息的转发。
11ton保护总体结构及其功能特点
1ton保护装置采用了分层分模块设计思想。
高速adsp-bF533负责最大8条线路96
路交流量和128路开关量的数据采集、计算和保护逻辑判断及出口,即相当于完成变电站中
多个装置保护功能。
powerpc8270以嵌入式linux操作系统为软件应用平台,实现与
adsp-bF533之间保护数据、动作事件、操作命令等交换;实现定值的存储和管理;实现
iec61850模型的建立和与主站的数据、信息交换;实现基于qt的保护界面的显示和管理;
实现数据库信息的管理,即相当于实现了变电站中后台监控层的功能,adsp-bF533与
powerpc8270之间的数据、信息交换通过双口Ram来完成,相当于变电站中装置与监控后
台之间的通讯通道。
采用分层的设计思想简化了软件的设计,提高了保护装置的可靠性。
同时我们在powerpc8270上的软件采取了分模块设计的思想,具体分为数据库管理模
块,定值管理模块,iec61850处理模块和保护界面显示模块。
数据库管理模块负责与
adsp-bF533之间数据、信息的交换,录波数据的存储,iec61850和界面数据源数据的组
织;定值管理模块负责iec61850模块和保护界面模块中保护定值的管理和保护定值的校验
和下发;iec61850模块负责与站控层设备之间数据、信息的交换,iec61850模型的创建等;
保护界面负责遥测、遥信数据和动作、操作事件的简报显示,遥控、定值和参数校验功能的
实现。
图1为1ton保护系统接口框图
图11ton保护系统接口框图
Fig1theframeofthe1tonprotectsysteminterface
其中保护界面显示模块采用了qt软件包进行了开发,本文重点讨论基于qt的1ton保
护界面的功能设计。
2基于qt的1ton保护界面的功能设计
2.1基于qt的1ton保护界面总体架构的设计
根据通用保护装置液晶界面功能要求及用户的特殊要求,1ton保护装置应该具备遥测、遥控、遥信、简报窗、保护定值管理功能、参数校验、重要参数设置、用户登录管理及装置接线图显示。
如图2所示
图2保护界面功能设计框图
Fig2thefunctiondesignframeoftheprotectinterface
qt程序设计思路清晰,它是面向对象的,容易扩展。
它以main入口函数处开始编程,并且支持命令行参数设置启动选项,通过创建一个qapplication对象来管理应用程序范围的资源。
在qapplication对象被执行前,可以创建与用户交互的可视化元素,即窗口部件。
例如按钮、菜单、滚动条和框架都是窗口部件的实例。
主窗口部件可以包含其他窗口部件。
有我们可以通过setgeometry可以确定的坐标定义窗口部件的位置,同时窗口部件总是被隐藏创建,可以避免窗口部件闪烁。
因此我们在未调用show(显示函数)可以初始化创建我们需要的所有窗口部件,可以避免在程序运行过程中被多次动态创建造成系统运行效率低下。
如上图2所示,首先创建了派生于qmainwindow主框架,完成保护描述信息(如线路描述、装置ip地址、定值描述,四遥参数描述等)的读取和初始设置,然后创建派生于qwidget主窗口部件和状态栏部件。
主窗口部件接着创建派生于qwidget遥测、遥信、遥控数据部件、装置接线图部件和派生于qmainwindow的简报窗口。
状态栏部件创建派于基于qdialog的用户登录管理、重要参数设置、参数校验对话框和基于qmainwindow的定值管理窗口。
由于qmainwindow类和qdialog类均派生于qwidget类,所以它们的创建过程很类似,以创建基于qmainwindow部件为例:
被创建对象=newqmainwindow(父对象,“被创建对象名称”,创建标志);//创建对象实例被创建对象->setgeometry(坐标系);//设置部件的布局
通过qt创建部件和完成该部件的布局是比较清晰和简单的,用户可以很方便利用qt完成保护界面总体架构的设计。
2.2基于qt的1ton保护界面功能模块设计
以保护定值管理界面例,介绍qt如何进行功能模块的设计。
对于保护管理定值界面,根据其功能需求应具备定值召唤和定值修改、定值区号召唤和修改,定值校核范围的设定以及保护开关量和保护采样值的查看。
如图3
图31ton保护定值管理界面
Fig3thevaluemanageinterfaceof1tonprotect
在定值管理界面中,当我们对菜单项或者工具栏进行操作时,需要根据不同的命令显示不同的界面。
这里我们就要使用qt中另一个特别重要的特性——“信号和槽”,当需要用户的响应命令和相关的处理程序建立联系时,我们只需要调用connect函数即可,调用形式:
connect(动作事件对象,signal(“何种用户动作事件”),部件对象,slot(“动作事件的处理函数”));当需要用户需要移除的响应命令和相关的处理程序联系时,我们只需要调用disconnect函数即可,调用形式:
disconnect(动作事件对象,signal(“何种用户动作事件”),部件对象,slot(“动作事件的处理函数”))。
这种通信连接关系在程序运行过程中可以随时建立和移除。
如图4为1ton保护定值管理界面事件响应流程。
如图4保护定值管理界面事件响应流程
Fig4theresponseflowof1tonprotectvaluemanageinterface
2.3基于qt的1ton保护界面汉字显示
为了方便用户对1ton保护装置的浏览和操作,我们需要以汉字方式显示。
在通用保护装置的普通液晶需要显示汉字时,常用的方法就是直接读取字库中点阵显示,显然这种方法程序处理起来非常麻烦。
而qt以本地字符编码方式unicode很好地解决了这个问题。
unicode是一种支持世界上绝大多数书写系统的字符编码标准。
它使用16位取代8位来存储字符,它可以编码大约65000个字符,可以覆盖绝大多数的汉字。
qt中的类qtextcodec专门可以实现编码字符的转换。
具体实现函数如下:
qstringgbkstr(constchar*chars)
{
qtextcodec*gbk;
gbk=qtextcodec:
:
codecForname("gbk");
returngbk->tounicode(chars,strlen(chars));
}
每次将需要显示的汉字传递给constchar*chars后,得到的编码字符就可以在各个部件中显示汉字。
3结论
基于qt的图形界面设计原理简单,功能强大,思路清晰。
由于qt的跨平台性和易移植性,相信在今后嵌入式平台图形界面显示中得到越来越广泛的应用。
目前,在河北承德西地110kV变工程1ton保护装置中,基于qt设计的保护定值界面在powerpc8270平台上嵌入式linux下运行性能稳定,画面显示优美,用户可操作性强。
得到了用户的认可和赞誉。
4参考文献:
[1]肖世广,李彦,吉华linux环境下基于qt库的软件plc开发系统,计算机工程与设计。
20xx,4(7):
1663-1666.developmentofsoftwareplcdevelopmentsystembasedonqtcomponentsinlinuxenvironment.xiaoshi-guang,liyan,puterengineeringanddesign.20xx,4(7):
1663-1666.
[2]徐广振,张茂青,董里嵌入式gui应用平台qtopia在intelxscalepxa270上的移植,自动化信息。
embeddedguiapplicationplatformqtopiatransplantstointelxscalepxa270.xuguang-zhen,zhangmao-qing,dongliautomationinFoRmation.
[3]钱龙华,吕强,杨季华,钱培德基于嵌入式linux系统的智能电话信息终端的设计与实现,微电子学与计算机。
20xx,24
(2):
167-170.designandimplementationofanintelligenttelephoneinformationterminalbasedonembeddedlinux.qianlong-hua,lVqiang,yangji-wen,qianpei-de.20xx,24
(2):
167-170.
[4]钱朝阳,徐英虎,徐方亮基于linux操作系统防火墙图形化用户界面的设计与实现,安徽建筑工业学院学报(自然科学版)。
20xx,2
(1):
62-64.designandconstructaFirewallwithgraphicalinterfaceforusersinlinuxos.qianchao-yang,xuying-hu,xiFang-lang.journalofanhuiinstitute
ofarchitecture//开始
voidon_up_clicked();//加速
voidon_down_clicked();//减速
voidon_stop_clicked();//停止
voidon_close_clicked();//关闭
signals:
voidsendValue(int);//传值
private:
ui:
:
widget*ui;
inti;//变量
qtimer*timerstart;//开始定时器
qtimer*timerup;//加速定时器
qtimer*timerdown;//减速定时器
dialog*dialog;//子对话框
(6)主界面类构造函数中进行成员变量的初始化。
示例代码如下:
this->setFixedsize(width(),height());
ui->progressbar->setValue(0);//初始值为0
ui->progressbar->setRange(0,maxsize-1);//设置进度条值的范围//红底
ui->progressbar->setstylesheet("qprogressbar:
:
chunk
{background-color:
rgb(255,0,0)}");
timerstart=newqtimer(this);
timerup=newqtimer(this);
timerdown=newqtimer(this);
connect(timerstart,signal(timeout()),this,slot(on_start_clicked()));connect(timerup,signal(timeout()),this,slot(on_up_clicked()));
connect(timerdown,signal(timeout()),this,slot(on_down_clicked()));
i=0;
dialog=newdialog;
connect(this,signal(sendValue(int)),dialog,slot(getValue(int)));dialog->show();
i=0;
ui->start->setenabled(true);
ui->up->setenabled(false);
ui->down->setenabled(false);
ui->stop->setenabled(false);
(7)分别为五个pushbutton添加信号对应的槽(类似消息响应函数),代码如下:
//开始
voidwidget:
:
on_start_clicked()
{
ui->start->setenabled(false);
ui->up->setenabled(true);
ui->down->setenabled(true);
ui->stop->setenabled(true);
timerstart->start
(1);
timerup->stop();
timerdown->stop();
if(i>=maxsize-1)
{
ui->progressbar->setValue(maxsize-1);
emitsendValue(maxsize-1);
timerstart->stop();
qmessagebox:
:
information(this,tr("提示"),tr("结束!
"),qmessagebox:
:
ok|qmessagebox:
:
default);
return;
}
//赋值
ui->progressbar->setValue(i);
i+=i;
emitsendValue(i);
ui->label_2->settext("4");
}
//加速
voidwidget:
:
on_up_clicked()
{
timerup->start
(1);
timerdown->stop();
timerstart->stop();
if(i>=maxsize-1)
{
ui->progressbar->setValue(maxsize-1);
emitsendValue(maxsize-1);
timerup->stop();
qmessagebox:
:
information(this,tr("提示"),tr("结束!
"),qmessagebox:
:
ok|qmessagebox:
:
default);
return;
}
ui->progressbar->setValue(i);
i+=up;
emitsendValue(i);
ui->label_2->settext("7");
}
//减速
voidwidget:
:
on_down_clicked()
{
timerdown->start
(1);
timerstart->stop();
timerup->stop();
if(i>=maxsize-1)
{
ui->progressbar->setValue(maxsize-1);
emitsendValue(maxsize-1);
timerdown->stop();
篇三:
浅谈qt
浅析qt界面库
20xx-06-2113:
52佚名互联网字号:
t|t
qt有商业版本和开源版本,被nokia收购后,开源版本使用的协议是lgpl,就是说,你把qt当作是一个库,你不修改库只是调用库的话,是免费的,而且你的代码不需要开源,只有针对qt库的改动部分才需要开源。
ad:
20xx云计算架构师峰会课程资料下载
qt界面库是本文主要讲述的内容,下面一段话来自坛子里。
对于qt,其实也是一个不错的选择。
linux,c++写界面基本上都是用它。
这个东西是跨平台的。
手机上也有。
问题就是这个东西到底免费还是不免费谁的不知道(linux上是免费的,我的是windows)。
他又插件直接集成进Vs20xx,20xx,然后想mFc那样花界面。
如果熟悉,开发效率跟mFc是一样的。
网上我以前找过,还是有不少的,毕竟这个东西也很久之前就开发出来了。
问题是这个很难招到这样的人才。
得靠自己去培养。
对于qt的描述,我不认同仁兄的看法。
首先,qt有商业版本和开源版本。
被nokia收购后,开源版本使用的协议是lgpl,就是说,你把qt当作是一个库,你不修改库只是调
用库的话,是免费的,而且你的代码不需要开源,只有针对qt库的改动部分才需要开源,所以,lgpl这个协议是很适合开源库的商业用途的。
其次,使用qt开发标准gui界面,比mFc的开发效率至少高一个数量级。
因为qt库比mFc庞大很多,而且qt的许多机制比mFc先进很多。
如果认为qt仅仅是一个跨平台界面库,那就小看它了。
我要说的是,它不但是一个通用的跨平台的面向对象的应用程序接口库(包括gui、数据库、网络、多线程、xml、数据容器和算法等,常用的编程资源都有封装,就是说,这些都可以跨平台,而不仅仅是界面),更是一种c++语言的扩展,一种编程平台和应用程序框架。
信号和槽的机制简化了对象之间的通信,比mFc的消息映射直观多了;界面的布局管理机制使开发人员可以很轻松地编出优雅的窗体;界面语言翻译机制也很方便实用;qobject容器管理可以看到qt在内存管理方面的努力;扩展的foreach循环结构也向现代语言靠拢;qt在界面层多封装了一层qstyle,开发者甚至可以使用css定制出一套界面来……如果仅仅是开发标准的gui(使用通用的控件),开发效率会很高,接近于.net窗口编程。
第三,qt自带的控件库比mFc丰富多了,而且还有很多扩展库和第三方的控件库,同样是lgpl开源的。
qt提供了Vs各个版本的插件,因此在Vs上开发qt程序比使用其它ui库方便很多。
第四,运行效率问题。
qt使用了很多高级机制,使它的效率确实比mFc。
比如,qt在界面层多封装了一层qt样式,在运行时可以使用不同风格的样式,即类似于换肤功能(不同的是,它由qt框架直接提供)。
所以执行效率比不上原生操作系统的界面库(如mFc、wxwidgets等)。
但是,qt界面库的效率还是比wpF、.net、java高几个数量级的,毕竟qt开发出来的是机器码,不是虚拟机或解释程序可以比拟的。
第五,程序大小的问题。
qt库的确很大,最基本的两个动态库文件,qtcore4.dll有2m多,qtgui4.dll有7m多(4.6.2),所以在发布软件的时候,还要带上这些动态库文件。
当然,使用qt静态链接库要好一点。
至于使用静态链接好,还是使用动态链接好,这里我不加讨论,没有最好,只有最适合的(mFc也有这个问题)。
第六,跨平台问题。
跨平台的确很诱人,尤其是做嵌入式设备的。
楼主的项目是什么我不了解,因此这里不妄加评论跨平台问题。
第七,人才问题和培训问题。
在中国,mFc/win32开发人员是最多的(不谈虚拟机平台编程),因为学校学的就是这个。
而会qt的真的很少。
不过鉴于nokia的大力支持和开源为lgpl的手段,我相信会qt的会越来越多。
qt的学习也不会想像中的难,毕竟它只是一个库(应用程序框架)而已,上手不会太难,不会比mFc久。
第八,帮助资源问题。
qt的资源很丰富,其自带的assistant相当于微软的msdn,各个接口和编辑元素的说明都很详细,不过都是英文的,跟mFc一样。
网上qt社区也不少。
毕竟,qt比mFc,甚至比windows还年长!
最后,声明一下,我不是qt的枪手。
程序员无枪手。
他们都很纯朴。
我们公司仍然在使用mFc,但是嵌入式设备装上一个正版windowsxpe,毕竟太奢侈了。
另外用mFc做界面真的很痛苦,我们公司的好几个项目都在向qt转型。
在界面库选型上,我们也花了不少时间,从开源的wxwidgets,到商业的一些大大小小的界面库,最后选中qt。
浅析qt对象模型
qt的特性是通过
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- qt 界面 模板