前后一个多星期的调研,初步总结如下:
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
p_w_picpaths --- 相关图片,未放置到tar中
hpcombobox* --- HpComboBox的实现
widgetgallery.*, norwegianwoodstyle.* --- 源自于Qt中的一个例子,用于展示Custom Style的实现
replace --- "sh replace" 对标准组件类进行替换

转载于:https://blog.51cto.com/jiangjqian/393184

Qt GUI 应用于机顶盒的初步探索相关推荐

  1. python界面编程pdf_Python Qt GUI快速编程——PyQt编程指南 中文pdf完整版[99MB]

    内容介绍热点排行相关文章下载地址↓ Python Qt GUI快速编程--PyQt编程指南主要讲述如何利用Python和Qt开发GUI应用程序的原理.方法和关键技术.本书共分四个部分:第一部分主要讲述 ...

  2. Python Qt GUI设计:信号与槽的使用方法(基础篇—7)

    目录 1.信号与槽的概念 2.信号与槽的基础函数 2.1.创建信号函数 2.2.连接信号函数 2.3.断开信号函数 2.4.发射信号函数 3.信号和槽的使用方法 3.1.内置信号与槽的使用 3.2.自 ...

  3. Python Qt GUI设计:窗口布局管理方法【强化】(基础篇—6)

    目录 1. 水平布局类(QHBoxLayout) 2.垂直布局类(QVBoxLayout) 3.网格布局类(QGridLayout) 3.1.单一的网络布局 3.2.跨越行.列的网络布局 4.表单布局 ...

  4. Python Qt GUI设计:窗口布局管理方法【基础】(基础篇—5)

    目录 1.布局管理器进行布局 2.容器控件进行布局 3.geometry属性:控件绝对布局 4.sizePolicy属性:微调优化控件布局 Qt Designer提供4种窗口布局方式,分别如下: Ve ...

  5. Python Qt GUI快速编程第六章代码分析

    这是我敲的Python Qt Gui快速编程第六章上的代码,以后可能要用到其中一些,如果忘记了就来这里看看. #coding=utf-8 #d import os import platform im ...

  6. python socket发送数组_利用pyprocessing初步探索数组排序算法可视化

    [经过两次更新,功能基本完成]最终效果请直接下拉到最后一个视频观看 背景说明 这篇文章旨在初步探索利用pyprocessing的强大的可视化功能,以及pyprocessing和Ipython之间的本地 ...

  7. Qt Console Application 与 Qt GUI Application互转

    在桌面开发中,总的来说,包含两种类型的应用程序:无界面的Console程序和有界面的GUI程序.Qt也不例外,包含Qt Console Application和Qt GUI Application. ...

  8. python qt gui快速编程_《PYTHON QT GUI快速编程 PYQT编程指南》源码

    文件名大小更新时间 <PYTHON QT GUI快速编程 PYQT编程指南>源码\chap01\answers.txt9882007-06-27 <PYTHON QT GUI快速编程 ...

  9. Alibaba Druid 源码阅读(二) 数据库连接池实现初步探索

    Alibaba Druid 源码阅读(二) 数据库连接池实现初步探索 简介 在上篇文章中,了解了连接池的应用场景和本地运行了示例,本篇文章中,我们尝试来探索下Alibaba Druid数据库连接池的整 ...

最新文章

  1. dmo Java_java DMO及增删改查代码的自动生成
  2. c语言switch scanf语句,c语言switch语句 谢谢·!~!~
  3. sql中DistinctCount的用法
  4. css实现风车转动,纯CSS实现的风车转动效果特效演示
  5. 【优化部署】 基于matlab遗传算法求解移动传感器部署优化问题【含Matlab源码 1197期】
  6. 南京晓庄学院c语言试卷,南京晓庄学院—C语言期末考试复习提纲.doc
  7. 龙贝格算法(Matlab实现)
  8. H5常用代码:页面框架
  9. 起风了用计算机打,求《起风了》计算器谱。
  10. 【Java实现】南京地铁导航系统的简单实现(二)—— 最短路径算法的实现
  11. RPG游戏制作-06-与NPC的交互
  12. cli命令行配置路由器_Cisco路由CLI基础命令
  13. initramfs概述
  14. 鸿蒙系统登lol一直闪退,win8.1系统玩lol英雄联盟出现闪退解决方法
  15. 敏捷个人2012.5月份户外活动报道:0费用京郊经典户外路线【京西古道】
  16. 50个Pandas的奇淫技巧:向量化字符串,玩转文本处理
  17. IndentationError:expected an indented block错误解决
  18. 原来比亚迪造车这么不赚钱,最大营收竟靠手机代工
  19. 差异巨大 6款通用工业级ARM处理器性能测试对比
  20. ModuleNotFoundError No module named ‘xxx‘可能的解决方案大全

热门文章

  1. 在字符串中,找到姓李的人
  2. Vue3.0定时任务显示实时日期相减后时间,vue日期相减天数时分秒
  3. Win11策略服务被禁用怎么办?Win11策略服务被禁用的解决方法
  4. C++实现web服务器(Linux)
  5. Windows 10 关键错误,“开始”菜单和 Cortana 无法工作。你下次登录时,我们将尝试解决此问题的解决方法
  6. 2019年秋季PAT甲级考试记录、经验总结
  7. 二进制文件比较工具bindiff/diaphora初体验
  8. 机器学习框架知识(MF)
  9. 【笔记】H.265/HEVC 视频编码(二)——数字视频格式
  10. 微信不仅可以关闭朋友圈,还可以关闭这些功能