基于Qt的电视机UI实现技术(3)

2019-08-01 22:35

{

RegisterWindow(SID_Base); RegisterWindow(SID_MainMenu);

RegisterWindow(SID_SetupHandler); }

动态创建与删除的函数:

int WindowHandler::CreateSubWindow(int nKey) {

if(nKey >= SID_Max) {

return 1; } else {

m_pCurSubWin = m_mapSc[nKey]->pfnAlloc();//分配内存

connect(m_pCurSubWin, SIGNAL(sig_goto_screen(int, int, SLOT(slot_GotoScreen(int, int, int)));//动态关联信号-槽 return 0; } }

Int WindowHandler::DeleteSubWindow(int nKey) {

if(nKey >= SID_Max) {

return 1; } else {

m_mapSc[nKey]->pfnDelete(m_pCurSubWin);//释放内存 return 0; } }

int)), this, 本项目实现中,有两个地方用到了这种动态创建与删除的技巧。一处是在

WindowHandler类中,实现BaseMenu、MainMenu、SetupHandler之间的切换;一处是在SetupHandler类中,实现Picture、PictureAdvance、Sound等subItem之间的切换。

3 控件美化

在电视机UI界面中,通常会用到一些控件进行信息描述,比如亮度调节时的滑块调节控件,自动搜台时的进度控件等。Qt提供了许多现成控件可供使用,并且每种控件都有一个setStyleSheet()方法,可以设置控件的各种样式。掌握了setStyleSheet()的使用方法,就很容易实现UI设计方案中外观精美的控件。 过

Qt Style Sheets 功能非常强大,利用它可以定制各种控件的外观。Style sheets可通QApplication::setStyleSheet()应用到整个应用程序中,也可以通过

QWidget::setStyleSheet()应用于某个特定的控件。若有多个style sheets在不同的层级上应用,Qt会将这些应用叠加起来。

Qt Style Sheets的概念、术语、语法受HTML的层叠样式表(CCS:Cascading Style Sheets)启发甚深,其使用的术语、语法几乎与HTML CSS相同。要熟练的使用Qt Style Sheets,对CSS语法要有一定的了解。 3.1 CSS中的若干概念

Qt控件在设置Style Sheets时,需要清楚每种属性的语法,下面就最常用到的几个CSS概念加以介绍。

3.1.1 CSS中的Box model

当使用style sheets时,每个控件都被当作一个具有四个同中心矩形的box来对待,这四个矩形分别是:margin矩形、border矩形、padding矩形及content矩形。四个同心矩形可由图3-1-1表示如下:

图3-1-1 box的矩形概念

每个box都有一个content 区域(文字,图像等),周围可选择的padding,border,以及margin区域。每个区域的尺寸有下面定义的属性加以指定。图3-1-1显示了这些区域之间的依赖关系。

margin, border,padding,这三者可以分成top,right,bottom,left四个段(例如,图3-1-2中,“LM”代表left margin,“RP”代表right padding,而“TB”代表top border,等等)。

这四个区域(content, padding, border, margin)的周界被称作edge,所以每个box有4个edge:

content edge(或者称为inner edge):

content edge 环绕在box的width与height定义的矩形的周围,通常由元素的渲染内容决定。四个content edges定义出了box的content box。

图3-1-2 Box model区域

padding edge:

padding edge 围绕在box padding的四周。如果padding的width为0,则padding

edge与content edge相同。四个padding edges定义了box的padding box。 border edge:

border edge围绕在box的border四周。如果border的width为0,则border edge与padding edge相同。四个border edges定义了box的border box。 margin edge(或者称为outer edge):

margin edge围绕在box margin的四周。如果margin的width为0,则margin edgemargin、border-width、padding属性在缺省情况下均被置为0。此时,四个矩形将与border edge相同。四个margin edges定义了box的margin box。 精确重合。

3.1.2 background相关属性

每个box都有一个背景层,这个背景层可能是全透明的(缺省值),可能填充了某种颜色,也可能填充了一幅或几幅图像。背景属性指明了需要使用哪种颜色(background-color),使用哪些图像(background-image),以及它们的尺寸,位置等等。

可以用background-color属性指定box的背景色。背景色将绘制于任何背景图像之后。例如:

QLabel { background-color: red } /* opaque red */ QLabel { background-color: #FF0000 } /* opaque red */ QLabel { background-color: rgba(255, 0, 0, 75%) } /* 75% opaque red */

QLabel { background-color: rgb(255, 0, 0) } /* opaque red */ QLabel { background-color: rgb(100%, 0%, 0%) } /* opaque red */ QLabel { background-color: hsv(60, 255, 255) } /* opaque yellow */ QLabel { background-color: hsva(240, 255, 255, 75%) } /* 75% blue */

可以用background-image属性为控件指定一个背景。缺省情况下,background-image仅被绘制在border区域的内部。若想绘制在border区域以外,可以使用background-clip属性。使用background-repeat与background-origin来控制背景图像是否在空间上重复以及重复绘制的方向。

一个background-image不会根据控件的尺寸来缩放自身的大小。若想让背景图像按照控件尺寸进行缩放,必须使用border-image属性。border-image属性提供了一个可变的背景,当指定了一个border-image时,便不需要再指定background-image了。若是同时指定了这两个属性,则border-image会将background-image覆盖。例如: QFrame { background-color: rgba(0,255,0,100) }/*设置背景色*/ QFrame { background-image: url(:/ball.png) }/*设置背景图片*/ QFrame { background-repeat: repeat-x }/*在x轴方向重复绘制背景*/

/*repeat-y在y轴方向重复绘制背景*/

/*no-repeat不重复绘制背景*/

/*默认情况下,x,y方向均会被重复绘制*/

QFrame { border: 1px solid #ff0000 }/*设置border的宽度,线形,颜色*/ 综合设置后的结果图3-1-3所示:

图3-1-3 style sheet设置效果

3.2 利用style sheet设置QSlider控件

Qt中默认的QSlider控件外观如图3-2-1所示:

图3-2-1 QSlider控件默认外观

QSlider控件由两部分组成:groove与handle。可以看成是由两个box叠加构成的。 用style sheet来改变QSlider控件外观最直接的方法就是分别设置groove与handle两个box的background image。其中的handle部分的box,其高度是跟groove的box高度相关的。在设置handle box的尺寸时,只需设置其宽度。若需要调整handle box的高度,则可利用handle box的margin来调整。

下面给出一段设置QSlider外观的参考代码,其效果如图3-2-2所示: QSlider *slider = new QSlider(parent);


基于Qt的电视机UI实现技术(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:法院实习日志民庭40篇

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: