欢迎来到天天文库
浏览记录
ID:6807286
大小:652.50 KB
页数:29页
时间:2018-01-26
《基于qt的电视机ui实现技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、基于Qt技术的可移植UI设计——基于Qt的电视机UI实现技术1UI软件架构基于Qt来实现一套电视机用户界面(UserInterface),首先需要选择一个软件框架,用于管理UI页面。在Qt中,MainWindow为创建应用程序的UI提供了一个框架。QMainWindow类及其相关类共同完成MainWindow中的页面管理。本项目选择了Qt的MainWindow框架作为实现电视机UI的软件架构。下面介绍一下Qt的MainWindow框架在实际项目中的应用。1.1Qt的MainWindow框架Qt的MainWindow框架,以
2、QMainWindow类作为程序主窗口。QMainWindow类拥有自己的布局,如图1-1-1所示:图1-1-1主窗口布局根据电视机UI的特点,用户只能通过遥控器及本机按键来操作UI,因此只需要一个中心区域显示交互内容就足够了。对于QMainWindow布局中的MenuBar、Toolbars、DockWidgets、StatusBar这几个部分是我们所不需要的。我们只需要关注CentralWidget即可。QMainWindow的CentralWidget可以是多种类型:lQt提供的标准窗口部件,比如QWidget、QT
3、extEdit等;l用户自定义的窗口部件;l布局管理器组织起来的多个widgets;l分裂器—QSplitter。QSplitter作为一个容器可以容纳多个窗口部件,此时中央部件是一个包容多个窗口部件的容器;l多文档区部件—QMdiArea。如果应用程序使用MDI,则CentralWidget将被一个QMdiArea部件占据。每个MDI窗口都是这个QMdiArea部件的一个子部件。应用程序选择哪种类型作为CentralWidget,需要由具体需求决定。电视机UI通常具有主菜单、一级子菜单、二级子菜单、快捷菜单、信息提示菜单
4、等多个菜单显示页面。本项目将每个菜单页面视作一个文档(Document),各级菜单之间的切换,采用多文档界面(MultipleDocumentInterface)模式进行管理,因此选择QMdiArea作为主窗口的CentralWidget。通过调用QMainWindow的setCentralWidget()方法来设置CentralWidget。QMdiArea提供了一个管理/显示多文档界面的区域。它通常作为应用程序多文档界面主窗口的CentralWidget,实现对子窗口的管理、绘制和排布。QMdiArea具有独特的多文档
5、子窗口类QMdiSubWindow,它在多文档区部件内表现为一个顶层窗口,可以关闭、最小化和最大化,具有独立的窗口标题。QMdiSubWindow具有自己的布局管理器,该布局管理器管理窗口标题栏和放置窗口部件的中心区域。多文档子窗口QMdiSubWindow和多文档区部件QMdiArea共同实现应用程序的多文档功能。通常通过调用函数QMdiArea::addSubWindow()为一个多文档部件添加一个多文档窗口,并返回该多文档子窗口的指针。总结:一个基于MDI的QtMainWindow框架,由QMainWindow、QM
6、diArea、QMdiSubWindow三个核心类构成。其中,QMainWindow类主要提供了一个应用程序的主窗口,在主窗口中提供了CentralWidget区域,用于页面管理。QMdiArea类被设置成CentralWidget,实行具体的子窗口管理任务;在QMdiArea中加入的每个子窗口都是QMdiSubWindow类或其派生类的对象;该类负责管理菜单页面的创建、销毁、显示、隐藏等等。需要注意的是,新菜单创建、老菜单销毁过程中,要防止内存泄露;此外,如何高效快速完成菜单间的切换是非常重要的。QMdiSubWindo
7、w类是具体的每个子窗口,或者称为子菜单页面的基类;实际的电视机主菜单、图像子菜单、声音子菜单等等的实现,均由该类派生。1.2Qt的MainWindow框架的实际应用实际应用中,将根据具体的UI方案需求,以QMainWindow、QMdiArea、QMdiSubWindow三个类作为基类,派生出满足需求的类加以应用。本项目中,由QMainWindow作为基类,派生出MainWindow类,除去基本的继承自QMainWindow的属性外,在MainWindow的构造函数中,加入了对主窗口几何位置、尺寸的设定;加入了主窗口背景属
8、性的设定。最后将由QMdiArea类派生来的WindowHandler类的对象设置为CentralWidget。本项目中,由QMdiArea作为基类,派生出WindowHandler类,用以实现菜单页面的管理。WindowHandler类中添加了用于页面之间跳转的槽函数slot_GotoScreen(i
此文档下载收益归作者所有