GUI各种控件的t特征属性和意义

来源:互联网 发布:sql select 不等于 编辑:程序博客网 时间:2024/05/22 10:35

转自 http://hi.baidu.com/dongdong2c/blog/item/68a886005251230a738da593.html
GUI各种控件的t特征属性和意义
2009-08-26 09:21
GUI中为每一个控件都提供了相关属性,可是大家好像对某些属性不太重视哦,其实GUI中每一个属性都是会有它存在的价值的,只是我们没有发现而已

下面我们讲解下GUI每个控件主要特征属性说明下,以便大家更好的使用GUI,毕竟是Matlab中的Visual Basic嘛

2# ToggleButton的value属性的意义和应用
3# RadioButton、CheckBox的value属性的应用
4# EditText的Max和Mini的应用以及callback的触发条件
5# ListBox和PopUpMenu的value和string属性
6# Slider的value和min、max属性

ToggleButton的value属性的意义和应用

一般来说GUI中的value属性值是表征该控件当前所处的状态,我们可以通过get获取其属性从而了解控件当前状态,另外通过set设置属性达到控制控件状态的目的

在通常情况下,value属性的取值又与控件min和max属性有关的

默认情况下max=1,min=0,value=0,而value==max时一般表示被选中或者处于按下状态,value==min时一般表示未选中或者弹起状态

但是max和min的值我们可以根据需要重新人工设置,不一定要1和0,但是一般不建议改动,除非万不得已,比如text控件,为了输入多行文字,必须将max设置为大于1的整数才可以


GUI中提供了两个【确定】控件,这就是PushButton和ToggleButton

这两个没有本质的区别,只是PushButton是一个单击触发按钮完成以后恢复原始状态

而ToggleButton会有两种状态,按下和弹起,我们可以根据需要设置两种状态分别对应不同的结果

但是我们如何知道当前状态到底是【按下】还是【弹起】状态呢?

这就需要我们用到ToggleButton的value属性了,当处于【按下】时,value==max,而【弹起】时,value==min


比如在ToggleButton_tag_creatfcn()中输入
复制内容到剪贴板
代码:
set(hObject,'max',100,'min',10);
set(hObject,'value',10);
在ToggleButton_tag_callback()中输入
复制内容到剪贴板
代码:
value=get(hObject,'value');
max=get(hObject,'max');
min=get(hObject,'min');
if value==max
set(hObject,'string',['value=' num2str(value) ',max=' num2str(max) ',so the state is down']);
else
set(hObject,'string',['value=' num2str(value) ',min=' num2str(min) ',so the state is up']);
end
我们将得到如下效果

第一次单击

第二次单击

RadioButton、CheckBox的value属性的应用

其实RadioButton、CheckBox的value的效果意义都和ToggleButton一样

当某个RadioButton、CheckBox被选中时,该控件的value==max,否则value==min


另外我们知道RadioButton(单选框)具有排它性,也就是说每次只能选中一个,而CheckBox(复选框)可以多选

为了保证RadioButton具有排他性,我们可将所有的RadioButton添加到一个Button Group中

 

EditText的Max和Mini的意义和应用

EditText的value属性没有什么实际意义,基本用不上

但是max和min却有较大意义,当max-min>1时可以输入多行文本,否则只能输入单行文本(注意此时不一定需要满足max>min)

由于min默认是0,为了输入多行文本,我们习惯的都是通过在EditText_tag_creatfcn()中设置max=2
复制内容到剪贴板
代码:
set(hObject,'max',2)
set(hObject,'string',{'This is the multiple lines demo','——by matlabsky'});%从这里可以看出,多行文本是通过cell数据实现的

当然我在GUI_filename_creatfcn()或者直接在属性面板修改也是可以的

另外我们在EditText上读取或者设置的string时,必须是字符串,但是有时我们需要处理的是数据,此时我们就需要使用str2num或者num2str进行数据转换

还有一点需要注意,EditText的callback执行的条件是:

1.EditText中的文本必须发生改变
2.确定操作
(1)鼠标:在当前GUI窗口的EditText控件之外的任意位置单击
(2)键盘:对于单行,直接按Enter;对于多行,按Ctr+Enter

在上面的两个条件同时满足的条件下才会激发EditText的callback


在编辑文本框中还支持如下快捷键

Ctrl+X — Cut
Ctrl+C — Copy
Ctrl+V — Paste
Ctrl+H — Delete last character
Ctrl+A — Select all

ListBox和PopUpMenu的value和string属性

当在列表框中选中某个条目的时候,value自动赋值为该条目的序号,注意第k个条目的序号是k

而string是一个cell型的字符串,其中保存了列表框中的所有条目

注意对于Listbox,它的max和min没有什么意义,对其它属性不构成影响

比如
在ListBox_tag_creatfcn()中输入,为列表框添加如下几个条目
复制内容到剪贴板
代码:
set(hObject,'string',{'西工大','西交大','北大','清华'});%从这里看出每个string必须是cell型数据,其中每一个对应一个条目
在ListBox_tag_callback()中输入,可以查看到底是选中了第几个条目,它的内容是什么
复制内容到剪贴板
代码:
string=get(hObject,'string');
num=get(hObject,'vlue')
item=string{num}

Listbox的callback触发的条件是,满足下面任意一条

1.鼠标点单击释放时(双击当两次单击处理)
2.键盘↑和↓操作
3.鼠标选中但未释放,此时使用空格或者回车键触发回调,释放鼠标时再次回调



Pop-Up Menu下拉菜单的用法和列表框的用法一样,这里不再累赘了

 

Slider的value和min、max属性

Slider滑块控件,一般常用作进度条或者选择数据范围

max对应于滑块的最大值,min是最小值,value是当前值

其中sliderstep=[x,y]表示点击滑块的前进后退箭头value每次改变x*(max-min),直接在滑块上点击每次改变y*(max-min),一般而言x<y,当然x,y≤1,否则没有意义

默认步长x=0.01,y=0.1,就是表示每次前进1%和10%

在移动滑块的时候会触发callback