MATLAB GUI界面设计 第二章——APP Designer操作正式入门

参考教程:MATLAB App Designer基础教程Matlab GUI界面设计(全集更新完毕-用户界面设计appdesigner(中文)Matlab Gui教程_哔哩哔哩_bilibili

一、一些常用的操作

1、组合与取消组合

(1)使用Ctrl同时选中多个组件,再右键,可将其组合,这样拖动一个组件时,同组合下的其它组件也会被一起拖动。

(2)既然有组合,那么相应地也会有取消组合,这里不再赘述。

2、对齐

同时选中多个组件,右键可以进行对齐操作。

3、组件对象重命名

(1)在组件浏览器中选择一个对象,其对应的组件在画布中会被选中。

(2)双击组件浏览器中的一个对象,可以对其进行重命名,当界面的组件越来越多时,在代码视图中可根据对象的名称进行快速定位。

二、数值字段和文本字段的区别

1、二者的主要区别

(1)数值字段的Value值为数字类型,如整数、浮点数等,为其赋值时按照正常的数值赋值流程操作即可。

(2)文本字段的Value值为字符(串)类型,为其赋值时,字符(串)要加上双引号或单引号。

2、案例------利息计算APP

(1)新建一个工程,首先进行前端设计,如下图所示,其中添加的编辑字段均为数值字段,如果使用文本字段,在试运行时将会报错。

(2)给按键"一键计算"增加回调函数,填入如下代码。

Matlab 复制代码
% 赋值操作
g_principal = app.principal.Value;  % 获取本金值并赋给变量g_principal
g_interest_rate = app.interest_rate.Value * 0.01;  % 获取利率值并赋给变量g_interest_rate
g_depository_period = app.depository_period.Value;  % 获取存期值并赋给变量g_depository_period

% 运算操作
g_interest = g_principal * g_interest_rate * g_depository_period;   % 计算利息并赋给变量g_interest

% 结果显示操作
app.interest.Value = g_interest;  % 利息文本编辑字段的内容改为g_interest的值

(3)试运行程序,验证结果是否正确。

(4)按键组件可以增加图标,不过需要注意的是,凡是在编程时只要引用到了外部文件,路径必须要先添加进MATLAB中。

三、画布的回调函数

1、概述

除了画布下的各组件以外,画布一样可以添加回调函数,具体有画布初始化回调函数、画布关闭回调函数和画布大小改变回调函数。

2、三个画布回调函数的调用时机

(1)StartFcn会在画布被创建的时候调用一次,程序员可以在里面添加一些组件初始化代码,如在坐标区显示一张图片(坐标区在第四章会进行介绍),这样用户在打开APP时,就不会看到坐标区原始的图像,而是一张初始化的图片。

(2)CloseRequestFcn会在画布被销毁的时候调用一次,程序员可以在里面添加一些保存重要信息至本地文件的代码,如保存用户退出前的操作数据,下次用户再打开APP时,通过StartFcn将这些操作数据全部初始化上去。

(3)SizeChangeFcn会在画布大小被用户改变时调用一次,程序员可以在里面添加一些重新设置组件位置和大小的代码,以适应画布大小的变化。

四、函数的封装和调用

1、函数的封装

(1)在MATLAB GUI设计的代码视图中,函数体以外的代码是不能随意增删改的,如果希望在代码视图中封装一些函数,可在左上角选择增加函数,这样MATLAB就会在代码视图添加一个空函数供程序员编辑(需要注意,首个参数需要为"app",这是自动添加的,不需要删掉)。

(2)虽然函数封装可以在GUI设计中实现,但这个函数是封装在画布对象中的,当画布对象被删除时,如果内部封装的函数过多,那么析构函数的执行时间也会较长,所以一般建议将通用的函数封装在其它M文件中,GUI设计需要调用它们时直接从M文件调用即可。

2、函数的调用

跟正常的函数调用一样,函数有定义后按照正常的语法调用即可,如果是在代码视图中定义的函数内,首个输入参数需要为"app",此处不再演示。

相关推荐
小羊没烦恼!1 天前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
大蓝头1 天前
安装包UI美化之路-nsNiuniuSkin全新UI调试与预览方法
ui·electron·安装包·截图控件·截屏控件
伞伞悦读1 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
C语言小火车1 天前
C/C++ 为什么需要编译器?
开发语言·c++
霍霍的袁1 天前
【C++】map 和 set 的使用 | 从用法到底层
开发语言·c++·学习·visual studio
孙启超1 天前
【AI开发之Rust】第 11 课:智能指针与内部可变性
开发语言·后端·rust
此生决int1 天前
深入理解C++系列(20)——C++11(下)
开发语言·c++
慧都小项1 天前
当边缘AI上产线:QtitanDocking 如何让工业 HMI 实现多视图协同
人工智能·qt·ui·边缘计算·qt6.3
CoderYanger1 天前
A.每日一题:835. 图像重叠
java·开发语言·程序人生·leetcode·面试·职场和发展·学习方法
伞伞悦读1 天前
【第37期】Python JSON 与配置详解:序列化、反序列化、嵌套结构和配置文件
开发语言·python·json