Matlab GUI中handles和hObject的区别
2018-04-06 12:03
489 查看
Hobject和handles区别
下面包含四种说法
1 h:指回调函数被调用对象的句柄;handles:是包含GUI中所有组件句柄的结构体,该结构体的域名由对象的TAG属性定义。也可以用来传递数据给其他的回调函数和主程序。
例如:创建一个包含button的GUI,button的TAG属性设为pushbutton1,GUIDE在应用程序M文件中生成如下的回调子函数:
function pushbutton1_callback(h,evendata,handles,varargin)
然后设置button的callback
mygui(‘pushbutton1_callback’,gcbo,[],guidata(gcbo))
其中:mygui:FIG文件名。ppushbutton1_callback:回调子函数名。gcbo:返回按钮句柄;[]:空矩阵; guidata(gcbo):从图形窗口的应用程序数据中获得的句柄结构体。
2 在MATLAB GUI中,数据分两种:GUI data和application data。 两种数据的存取机制是相同的,但是GUI data使用起来比较方便。
每一个GUI 图形界面都维持一个和自己的界面的图形(figure)相联系的一个handles数据结构,这个数据结构中容纳图形界面内所有控件(按钮、列表框、编辑框等)的句柄,相当于一个大的“容器”,里面存放了figure内所有控件的句柄。同时,handles结构也可以被figure内所有控件的回调函数访问,因为回调函数的输入参数中都有handles结构。此外,在控件的回调函数内可以把数据存储到handles结构中。
handles结构数据的取得和存储是通过guidata函数来实现的。
例如:在编辑框edit的回调函数内想获得编辑框的句柄,hObject可以,也可以用handles.edit,这两个值是一样的,没有区别,只不过获得控件句柄的方式不同而已:hObject是调用回调函数时直接传过来的,handles.edit是从handles结构中取得的。但是,在控件的CreateFcn函数中如果想访问控件,必须用hObject,而不能用handles.edit,因为这时控件还没被创建,其句柄还没有加入到handles结构中。
3 如果把figure对象当做一个大缸,而把其他对象例如AXES,BUTTON等等当做这个大缸里的小缸,那么handles就相当于这个大缸的句柄,可以用大缸的句柄来设置小缸的属性,例如handles.pushbutton。Hobject就相当于每一个小缸的句柄了,可以直接在响应控件的function后面加 set(hObject,’property’,’value’);
4 handl
9848
es和hObject都是“句柄”,储存了它所代表的“那个对象”的信息;
·只不过handles代表的是当前整个界面(整个程序)所有的句柄,hObject代表的是当前的这个控件(比如按钮,编辑框)
·在当前控件的callback里可以用hObject,也可用handles.;在别的控件的callback里可以用handles.来调用别的控件的句柄
下面包含四种说法
1 h:指回调函数被调用对象的句柄;handles:是包含GUI中所有组件句柄的结构体,该结构体的域名由对象的TAG属性定义。也可以用来传递数据给其他的回调函数和主程序。
例如:创建一个包含button的GUI,button的TAG属性设为pushbutton1,GUIDE在应用程序M文件中生成如下的回调子函数:
function pushbutton1_callback(h,evendata,handles,varargin)
然后设置button的callback
mygui(‘pushbutton1_callback’,gcbo,[],guidata(gcbo))
其中:mygui:FIG文件名。ppushbutton1_callback:回调子函数名。gcbo:返回按钮句柄;[]:空矩阵; guidata(gcbo):从图形窗口的应用程序数据中获得的句柄结构体。
2 在MATLAB GUI中,数据分两种:GUI data和application data。 两种数据的存取机制是相同的,但是GUI data使用起来比较方便。
每一个GUI 图形界面都维持一个和自己的界面的图形(figure)相联系的一个handles数据结构,这个数据结构中容纳图形界面内所有控件(按钮、列表框、编辑框等)的句柄,相当于一个大的“容器”,里面存放了figure内所有控件的句柄。同时,handles结构也可以被figure内所有控件的回调函数访问,因为回调函数的输入参数中都有handles结构。此外,在控件的回调函数内可以把数据存储到handles结构中。
handles结构数据的取得和存储是通过guidata函数来实现的。
例如:在编辑框edit的回调函数内想获得编辑框的句柄,hObject可以,也可以用handles.edit,这两个值是一样的,没有区别,只不过获得控件句柄的方式不同而已:hObject是调用回调函数时直接传过来的,handles.edit是从handles结构中取得的。但是,在控件的CreateFcn函数中如果想访问控件,必须用hObject,而不能用handles.edit,因为这时控件还没被创建,其句柄还没有加入到handles结构中。
各控件的回调函数中,hObject的值是不一样的,分别代表调用回调函数的控件的句柄,而handles结构却是一样的。这种机制便于figure内的不同控件的回调函数内传递数据。
3 如果把figure对象当做一个大缸,而把其他对象例如AXES,BUTTON等等当做这个大缸里的小缸,那么handles就相当于这个大缸的句柄,可以用大缸的句柄来设置小缸的属性,例如handles.pushbutton。Hobject就相当于每一个小缸的句柄了,可以直接在响应控件的function后面加 set(hObject,’property’,’value’);
4 handl
9848
es和hObject都是“句柄”,储存了它所代表的“那个对象”的信息;
·只不过handles代表的是当前整个界面(整个程序)所有的句柄,hObject代表的是当前的这个控件(比如按钮,编辑框)
·在当前控件的callback里可以用hObject,也可用handles.;在别的控件的callback里可以用handles.来调用别的控件的句柄
相关文章推荐
- MATLAB GUI handles与hObject的区别理解
- 【Get深一度】Matlab_GUI handles、hobject、guidata、两种数据GUI data+application data解读
- 关于matlab GUI 中 多个plot(handles.axes) 无法hold on的问题
- matlab GUI的handles
- [Matlab GUI]handles的问题
- MATLAB中GUI的handles
- Matlab plot、fplot、ezplot三者区别
- MATLAB GUI平台
- CMake和CCMake的区别 -- cmake-curses-gui
- 基于MATLAB GUI界面的MCU串口实时绘图设计
- Matlab的GUI编程入门项目一:常用三角函数的绘制
- matlab中feval与eval的区别
- 对matlab GUI程序简单加密
- matlab中 ndims(a)、size(a)、length(a)的区别<转载>
- windows server gui安装和server core安装的区别
- 基于matlab的GUI图像处理
- MATLAB 中gcf、gca 以及gco 的区别
- matlab学习笔记 repmat函数与kron函数之区别
- Conclusion:Image Registration and Fusion with Matlab GUI
- 把Matlab中的GUI生成独立的应用程序