Have fun with sci.dog

MATLAB App Designer 中使用事件(一)

最近使用MATLAB App Designer开发了一个图像处理的App。总体感觉,还是比较方便和快捷的。App Designer和GUI的一个显著区别是,就是App Designer默认采用的是类作为的窗口,而GUI为函数。因此,通过类的事件进行较为方便和复杂的窗口响应就变得重要。

接下来这个专题blog用具体的示例展示App Designer中事件的使用。阅读者最好有C#事件使用的基础。

今天是第一讲,主题是properties的事件。

属性的事件,通常是属性值发生变化的时候,需要采取的一些操作和处理。常见的就是一个属性变化后,我们让窗体做出响应的显示。

下面以例子来说明。

对于初级设计用户界面的同学而言,会将这个例子中的所有代码写进 “计算”的回调函数里面。但通过事件,我们可以让代码更加明确,进一步分工。这里展开几个核心的代码:

1、自定义的属性

Avalue、Bvalue、Cvalue分布存储A,B,C的值,Cstatus显示C的奇偶性。由于A,B是用户输入,C是计算结果显示,因此,C的属性值发生变化时,要进行事件响应。故Cvalue和Cstatus要显示可见(SetBbservable)。

2、初始化(窗体的startup回调)

代码的最后两行是关键,增加事件监听者,意思是,窗体监听属性Cvalue和Cstatus的PostSet事件,并按照app.CvalueChangedFcn和app.CstatusChangedFcn进行处理。PostSet的属性值的默认事件,意思是属性值发生变化以后触发该事件。

有四个与属性相关的预定义事件:

  • PreSet – 在设置属性值(调用其 set 访问方法)前即刻触发
  • PostSet – 设置属性值后即刻触发
  • PreGet – 在响应属性值查询(调用其 get 访问方法)前即刻触发
  • PostGet – 返回查询的属性值后即刻触发

3、CvalueChangedFcn和CstatusChangedFcn函数

这两个函数用于响应事件,将Cvalue和Cstatus的值赋给窗体控件并显示。

4、“计算”按钮的回调

这个计算按钮就单纯多了,只干计算的事情。

最后的效果

通过今天这个例子,我们可以成功利用事件将app不同的功能区分开,增强了代码的易读性,使得后期维护修改更加容易,对于稍微复杂的软件,这点特别重要。

完整代码可以在github下载():

https://github.com/gouff/MatlabEventExample/blob/master/EasyEvent.mlapp

下一个例子,将描述完全自定义一个事件,包括事件定义、触发定义、事件监听、事件处理。

赞(0)
未经允许不得转载:SciDog » MATLAB App Designer 中使用事件(一)

评论 抢沙发