文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>Qt GUI 应用于机顶盒的初步探索

Qt GUI 应用于机顶盒的初步探索

时间:2010-09-17  来源:jiangjqian

前后一个多星期的调研,初步总结如下:
1. Qt应用于机顶盒,差异于PC环境,必须构建可应用于电视机显示和遥控器控制的风格(Style)和组件(Widget)。
2. 需要考虑裁剪Qt以便适应嵌入式较为有限的存储空间,关于这方面的探讨估计已经比较普遍。
3. Qt灵活和强大,同时也庞大而需要较多时间熟悉,以便发挥到极致。

下面记录相关细节,以便将来或后面的人参考:
一: 关于Qt的学习
  像开源社区许多技术都有不少经典书籍一样,Qt的经典是<<C++ GUI Programming With Qt 4, Second Edition>>,能够点出技术的核心,并且循序渐进。
  另外,Qt相比MFC,更加合理,易懂。

二:安装
  qt.nokia.com/downloads选择"for linux/x11"下载,chmod +x,运行即可。如果缺少支撑包,apt-get即可。

三:Qt建立机顶盒GUI的探索
  这里的探索主要包括几个问题的解决。
A. QComboBox(复选框) -- 探讨Custom Style和Custom Widgets
  PC风格的复选框由鼠标点击出现下拉框,而机顶盒是遥控器左右按钮控制。
I. 创建适应于机顶盒的ComboBox控件
  可以继承QComboBox,实现虚函数:
  1) HpComboBox::sizeHint(),使之宽度增加以便放置左箭头
  2) HpComboBox::paintEvent(),调整CE_ComboBoxLabel的显示区间使之左移
  3) HpCombboBox::KeypressEvent(),使左右按键映射到上下按键

II. 创建适应于机顶盒的Style
  因为我们在paintEvent中使用了QStylePainter类中的drawComplexControl()和drawControl()方法,需要修改方法中对ComboBox构建的显示。实验时直接引用了Qt源码中window style的源码,并修改drawComplexControl()中CC_ComboBox部分的实现。
  实际项目中应该是建立一个新的style类,并且继承qwindowstyle,对类似drawComplexControl()等虚函数定义自身的方法。
  新的Style的使用,通过方法QApplication::SetStyle(new hpStyle)引用

B. 探讨style sheet
  style sheet可以调整组件的颜色,几何属性,字体等,类似HTML中的Style,正因为如此使得Qt命名适得其所。而在机顶盒的GUI构建中,需要大量应用该功能以求美观和时尚。这里要提的是,我们可以通过修改Parent Frame的style sheet,而免去对所有的Child widget进行同等的修改。参考:"Qt Stylesheets Tutorial" - http://thesmithfam.org/blog/2009/09/10/qt-stylesheets-tutorial/


Picture1: STB GUI designed by Qt

四:关于Qt designer
上图通过Qt designer画出,目前Custom style和Custom Widget加入到designer中遇到困难。目前的方法是按照标准组件画出来后,通过.ui文件生成.h文件,然后把文件中的标准组件类替换成自定义的组件类。如下:
========================================================================
sed 's/QComboBox/HpComboBox/g' ui_autosearch.h > temp
sed 's/<QtGui\/HpComboBox>/"hpcombobox.h"/g' temp > ui_autosearch.h
========================================================================

附件:
附件stb-styles.tar,相关图片没有放置在里面,仅供参考。

autosearch* --- autosearch dialog, qt designer生成
hpstyle.h,qwindowsstyle.cpp,qstylehelper*,qwindowsstyle_p.h, qcommonstyle_p.h,qstyle_p.h --- 源自于Qt源码中qwindowstyle的实现,修改成hpstyle
images --- 相关图片,未放置到tar中
hpcombobox* --- HpComboBox的实现
widgetgallery.*, norwegianwoodstyle.* --- 源自于Qt中的一个例子,用于展示Custom Style的实现
replace --- "sh replace" 对标准组件类进行替换

 

相关阅读 更多 +
排行榜 更多 +
别惹神枪手安卓版

别惹神枪手安卓版

冒险解谜 下载
坦克战争世界

坦克战争世界

模拟经营 下载
丛林反击战

丛林反击战

飞行射击 下载