qt界面模板.docx

上传人:b****3 文档编号:4260353 上传时间:2023-05-06 格式:DOCX 页数:12 大小:23.45KB
下载 相关 举报
qt界面模板.docx_第1页
第1页 / 共12页
qt界面模板.docx_第2页
第2页 / 共12页
qt界面模板.docx_第3页
第3页 / 共12页
qt界面模板.docx_第4页
第4页 / 共12页
qt界面模板.docx_第5页
第5页 / 共12页
qt界面模板.docx_第6页
第6页 / 共12页
qt界面模板.docx_第7页
第7页 / 共12页
qt界面模板.docx_第8页
第8页 / 共12页
qt界面模板.docx_第9页
第9页 / 共12页
qt界面模板.docx_第10页
第10页 / 共12页
qt界面模板.docx_第11页
第11页 / 共12页
qt界面模板.docx_第12页
第12页 / 共12页
亲,该文档总共12页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

qt界面模板.docx

《qt界面模板.docx》由会员分享,可在线阅读,更多相关《qt界面模板.docx(12页珍藏版)》请在冰点文库上搜索。

qt界面模板.docx

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的特性是通过

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2