在前面已经对duilib有个一个基本的了解,并且创建了简单的空白窗体。这仅仅只是一个开始,如何去创建一个绚丽多彩的界面呢?这就需要一些控件元素(按钮、文本框、列表框等等)来完善。


一. Duilib控件简介

在之前空白窗体的基础上,在界面上添加了一些控件,让大家先对这些控件效果有个基本的认识。如下图所示:
基本控件
 
高级控件
 
 
一些控件的基本显示效果就如同上面两幅图所示。实际上,在Duilib学习笔记《01》—duilib整体框架认识中我们就已经提到过Duilib这个库的组成,其中就提到了控件这部分,如下图所示:
 
对应到工程代码中,实际上是分为了两部分——Core 和 Control
Core中包含的是所有控件公用的部分,里面主要是一些基类和绘制的封装。
Control中包含的就是各个不同的控件的行为。
       
 

二. Duilib控件使用

下面就挑选部分控件的使用具体说明一下:
1)Button控件
 
按钮控件大家应该都不陌生了,在之前的空白窗体例子中左上角的系统操作按钮就用的按钮控件。
<Button name="closeBtn" maxwidth="" maxheight="" normalimage="file='sys_dlg_close.png' source='90,0,135,17'" hotimage="file='sys_dlg_close.png' source='45,0,90,17'" pushedimage="file='sys_dlg_close.png' source='0,0,45,17'"/>
在XML布局中以<Button  属性名=”属性值” />的形式书写。
如上面的closeBtn的例子。其中:name表示控件名称,同一窗口内必须唯一;maxwidth、maxheight表示分别控件的最大宽度、最大高度;normalimage、hotimage、pushedimage分别表示按钮的三状态(正常状态、鼠标移动上去的状态、鼠标按下的状态)。
当然,除了例子中的这些属性外,每个控件对应的都还有很多属性,具体可以查阅属性列表,根据实际需要使用。
2)Edit控件
 
<Edit name="button1" tooltip="普通控件" text="普通控件" bkimage="res='button_pushed.png' corner='6,6,6,6'" />

Edit控件对应的有各种属性(只读、数字、密码。。。),而对应的仅仅只需要在XML中普通控件的布局属性中设分别设置readonly、numberonly、password即可。

3)Combo控件
<Combo name="font_type" droptype="droplist" width="" height="" textpadding="4,1,1,1" normalimage="file='combo.png' source='0,0,100,22' corner='2,2,20,2'" hotimage="file='combo.png' source='0,22,100,44' corner='2,2,22,2'" pushedimage="file='combo.png' source='0,44,100,66' corner='2,2,22,2'">
<ListLabelElement text="微软雅黑" selected="true" height="" />
<ListLabelElement text="宋体" height="" />
<ListLabelElement text="黑体" height="" />
<ListLabelElement text="幼圆" height="" />
<ListLabelElement text="楷体" height="" />
</Combo>

XML布局中外侧是<Combo></Combo>,内层通过<ListLabelElement />添加具体选择。

4)List控件
<List name="listview" vscrollbar="true" hscrollbar="true" headerbkimage="file='list_header_bg.png'" itemtextstyle="center">
<ListHeader height="" menu="true">
<ListHeaderItem text="姓名" width="" hotimage="file='list_header_hot.png'" pushedimage="file='list_header_pushed.png'" sepimage="file='list_header_sep.png'" sepwidth="" />
<ListHeaderItem text="学号" width="" hotimage="file='list_header_hot.png'" pushedimage="file='list_header_pushed.png'" sepimage="file='list_header_sep.png'" sepwidth="" />
<ListHeaderItem text="成绩" width="" hotimage="file='list_header_hot.png'" pushedimage="file='list_header_pushed.png'" sepimage="file='list_header_sep.png'" sepwidth="" />
</ListHeader>
</List>

在实际中,我们可能需要向控件中添加数据,而对于List中如何添加数据呢?如下所示:

// List控件中添加数据
// 注意:添加List列表内容,必须先Add(pListElement)添加元素,再SetText进行元素值的设置
for (int i = ; i < ; i++)
{
CListTextElementUI* pListElement = new CListTextElementUI;
pListElement->SetTag(i);
m_pList->Add(pListElement); pListElement->SetText(, _T("WHO1753"));
pListElement->SetText(, _T("程序设计"));
pListElement->SetText(, _T(""));
}


三. 总结

除了上述这些列举的这些控件例子外,还有其它很多控件没能一一列举。但记住一点,一些复杂的东西都是由一些简单的东西所组成的。对于控件这部分的介绍,总结起来其实主要就是一下几点:
1)布局
控件在XML中布局基本都是<控件 属性名=”属性值”  />的形式书写。
2)属性设置
在前面,控件的属性我们基本都是在XML布局文件找那个就添加设置了。这当然是一个方法。但除此之外,还可以通过控件对应提供的方法来设置。如Edit控件,我们可以直接在XML布局中可以设置只读、数字、密码等属性。同样,我们也可以在Edit所提供的方法中发现提供了SetReadonly、SetNumberOnly、SetPasswordMord等方法。具体使用中根据时间情况的需要在XML中设置或者通过控件方法设置。
3)根据name获取控件
对于很多控件,最终可能不仅仅只是一个单纯的显示。很多时候还要和数据打交道。所以在具体处理时需要根据XMl文件中控件的属性name获取指定的控件进行相关操作。在代码中控件(以Button为例,其它控件获取方法类似)获取方式如下:
CButtonUI* m_pCloseBtn;
m_pCloseBtn = static_cast<CButtonUI*>(m_PaintManager.FindControl(_T("closeBtn")));

4)控件使用

不同的控件具体情况下,操作也不一样。如Edit控件可用于输入文本,数字等等。List控件可以显示不同列、不同行的数据。也就是说具体每个控件的方法不一样,对应的每个控件的方法,Duilib的Control中包含的就是各个不同的控件的行为方法了,使用时如果对于某些方法不熟悉,可以直接查看。

最后附上本节对应的代码:代码下载
 
 
 
 

Duilib学习笔记《03》— 控件使用的更多相关文章

  1. iOS学习笔记——基础控件(上)

    本篇简单罗列一下一些常用的UI控件以及它们特有的属性,事件等等.由于是笔记,相比起来不会太详细 UIView 所有UI控件都继承于这个UIView,它所拥有的属性必是所有控件都拥有,这些属性都是控件最 ...

  2. Python:GUI之tkinter学习笔记1控件的介绍及使用

    相关内容: tkinter的使用 1.模块的导入 2.使用 3.控件介绍 Tk Button Label Frame Toplevel Menu Menubutton Canvas Entry Mes ...

  3. ios 学习笔记之控件属性

    1.文本框 设置密码属性:Secure Text Entry 勾选; 设置文本框带清除属性: Clear Button =Is always visible;  默认是不带清除属性:Never app ...

  4. jQuery学习笔记(控件位置定位、尺寸大小的获取等)

    想做一个幽灵按钮出来,效果大概如下图: 当点击按钮的时候,会有四根线条从四个方向飞入,经历从“无-有-无”的闪入过程. 那么我的设计想法是,先在HTML中定义一个按钮,然后在jQuery中设计按钮点击 ...

  5. 学习笔记-menusript控件中条目权限设置使用

    在做一个小程序的时候,偶然发现了使用menusript控件做权限设置的方法,仅此标记,以供参考. 首先创建一个实例:testuseright.sln, 在项目文件里创建两个窗体:Form1.cs和us ...

  6. IOS 学习笔记(7) 控件 分隔栏控件(UISegmentControl)的使用方法

    分隔栏控件的系统默认式样一共有3种,分别是“普通式样”,"边框式样","条状式样" 分隔栏控件中有一个momentary属性,默认时NO.当开发者配置成YES时 ...

  7. IOS 学习笔记(6) 控件 文本域(UITextField)的使用方法

    UITextField控件的诸多特性都和UITextView相似,比如成为输入文本焦点时键盘自动显示,支持长按弹出动作选项,能够接收输入事件(开始输入,修改内容,结束输入和点击回车等). 1.特有的特 ...

  8. IOS 学习笔记(5) 控件 文本视图(UITextView)的使用方法

    相对于UILabell所支持的较短文本内容,UITextView对于长文本的支持更好.UITextView能够以滚动的方式全部浏览到长文本,并且就像UILabel那样,从ISO6,他也提供了对NSAt ...

  9. IOS 学习笔记(4) 控件 标签(UILabel)的使用方法

    虽说Label的中文翻译是标签标记,但它其实是一个静态文本内容的展现控件. 一般来说,UILabel只是一个只读的文本视图,开发者可以利用UiLabel来展示内容长度有固定上限的文字内容.并且,UIL ...

  10. [Android学习笔记]组合控件的使用

    组合控件的使用 开发过程中,多个UI控件需要协同工作,相互交互之后,才可完成一个完整的业务需求,此时可把这些控件封装成为一个整体,相互之间的交互逻辑封装其中,外部调用可无需关心内部逻辑,只需获取处理后 ...

随机推荐

  1. 黄聪:mysql下使用update set from select

    UPDATE friends INNER JOIN users ON friends.friendid=users.userid SET friends.friendname=users.userna ...

  2. JavaScript如何获得昨天明天等日期

    <script type="text/javascript"> function GetDateStr(AddDayCount) { var dd = new Date ...

  3. DBA_Oracle性能优化的基本方法概述(方法论)

    2014-12-18 Created By BaoXinjian

  4. PKU 2406 Power Strings(KMP最长循环不重叠字串)

    题意:给一个字符串S长度不超过10^6,求最大的n使得S由n个相同的字符串a连接而成,如:"ababab"则由n=3个"ab"连接而成,"aaaa&q ...

  5. Carath\'eodory 不等式

    (Carath\'eodory 不等式) 利用 Scharwz 引理及线性变换, 证明: 若函数 $f(z)$ 在圆 $|z|<R$ 内全纯, 在 $|z|\leq R$ 上连续, $M(r)$ ...

  6. Windows服务程序和安装程序制作

    转:http://www.cr173.com/html/15350_1.html 本文介绍了如何用C#创建.安装.启动.监控.卸载简单的Windows Service 的内容步骤和注意事项. 一.创建 ...

  7. C#3

    定义常量:1.静态常量 const(定义时必须初始化)  ...常量都不可以改变 2.动态常量 readonly(定义时不必初始化) \\要在Main方法前面 用法:const double PI = ...

  8. 在win7电脑中如何查看运行进程的PID标识符

    在介绍技巧方法之前,咱们还是先来介绍一下什么是PID标识符,这个PID标识符就是系统对运行中的程序自动分配的一个编号,是用来识别对应进程的,而且这个编号也是一一对应,不会有重复的,只有当系统结束运行的 ...

  9. bootstrap小例子等

    一个简单的表单样式: <div class="row"> <form action="#" class="form-horizont ...

  10. Log4Net在Windows服务中不能记录日志 z

    解决方案: 在Windows安装服务的“serviceProcessInstaller1”中修改Account属性为LocalSystem.见下图 后来查了一下这个Account属性 说白了还是权限的 ...