OOP中的问题访问成员

9意见(过去30天)
andreas bernatzky.
andreas bernatzky. 在2021年5月17日13:43
回答: 穆罕默德萨米 于5月18日2021年在2:55
我正在尝试编写自定义登录对话框UI作为类。
到目前为止,我已经完成了所有登录回调(或者我这么认为),但如果我按登录按钮 Logincallback. 被执行。
我的问题是我无法访问内部的任何成员 Logincallback. ?一切似乎都是空的,我不明白为什么。
还尝试过它的测试变量,这是一种简单的双型 M_Test. 也是空的,但是由构造函数初始化正确。
Classdef.logindialog.
这个课程的%logindialog摘要走到这里
%此类提供登录UI和后端
%logindialog.
特性
main_fig;%mainfigure.
m_login_btn;%登录BTN;
m_login_dropdown;%显示以前的登录
m_login_chk;%提供了从前登录的能力
m_serverip_txt;%输入登录IP
m_serverusr_txt;
m_serverpw_txt;
m_serverip_lbl;%输入登录IP
m_serverusr_lbl;
m_serverpw_lbl;
m_logins;%保留所有过去的登录字段
m_test;
结尾
方法
%默认构造函数
功能obj = logindialog()
%% Deminde UI.
obj.main_fig = Uifigure;
obj.main_fig.resize = 0;
%% define按钮
obj.m_login_btn = uibutton(obj.main_fig);
obj.m_login_btn.text =.“登录”;
obj.m_login_btn.position = [obj.main_fig.position(3)/ 2 - obj.m_login_btn.position(3)/ 2,......
20,100,20];
obj.m_login_btn.buttonpushedfcn = @ obj.logincallback;
%%定义下拉列表
obj.m_login_dropdown = uidropdown(obj.main_fig);
obj.m_login_dropdown.position = [obj.main_fig.position(3)-obj.m_login_dropdown.position(3),......
obj.main_fig.position(4)-obj.m_login_dropdown.position(4),100,20];
obj.m_login_dropdown.items = cell(1,0);
obj.m_login_dropdown.visible = 0;
%% define服务器IP
obj.m_serverip_lbl = uilabel(obj.main_fig);
obj.m_serverip_lbl.text =.“服务器IP:”;
obj.m_serverip_lbl.position = [obj.main_fig.position(3)/ 2 - obj.m_login_btn.position(3)/ 2 - 60,......
150,100,20];
%编辑字段
obj.m_serverip_txt = uieditfield(obj.main_fig);
obj.m_serverip_txt.position = [obj.main_fig.position(3)/ 2 - obj.m_login_btn.position(3)/ 2,......
150,100,20];
%% define服务器用户名
obj.m_serverusr_lbl = uilabel(obj.main_fig);
obj.m_serverusr_lbl.text =.“用户名:”;
obj.m_serverusr_lbl.position = [obj.main_fig.position(3)/ 2 - obj.m_login_btn.position(3)/ 2 - 60,......
125,100,20];
%编辑字段
obj.m_serverusr_txt = uieditfield(obj.main_fig);
obj.m_serverusr_txt.position = [obj.main_fig.position(3)/ 2 - obj.m_login_btn.position(3)/ 2,......
125,100,20];
%% define服务器pw
obj.m_serverpw_lbl = uilabel(obj.main_fig);
obj.m_serverpw_lbl.text =.“密码:”;
obj.m_serverpw_lbl.position = [obj.main_fig.position(3)/ 2 - obj.m_login_btn.position(3)/ 2 - 60,......
100,100,20];
%编辑字段
obj.m_serverpw_txt = uieditfield(obj.main_fig);
obj.m_serverpw_txt.position = [obj.main_fig.position(3)/ 2 - obj.m_login_btn.position(3)/ 2,......
100,100,20];
%%定义CHK框
obj.m_login_chk = Uicheckbox(Obj.main_fig);
obj.m_login_chk.text =.“使用现有登录”;
obj.m_login_chk.position = [obj.m_login_dropdown.position(1) - obj.m_login_chk.position(3)* 1.5,obj.m_login_dropdown.position(2)-5,120,30];
obj.m_login_chk.valuechangedfcn = @(cbx,事件)cboxchanged(obj,obj.m_login_chk);
%CHK框价值
%% load logins.
如果(存在('savedlogins.mat''文件')〜= 0)
obj.m_logins = load('savedlogins');
如果(〜isempty(obj.m_logins.m_savedlogins))
标识符= obj.m_logins.m_savedlogins {:,1};
obj.m_login_dropdown.items =标识符;
结尾
结尾
obj.m_test = 33;
结尾
在复选框上执行的%%方法已更改
功能obj = cboxchanged(obj,cbx)
val = cbx.Value;
如果(val == 1)
obj.m_login_dropdown.visible ='上';
obj.m_serverip_txt.enable = 0;
obj.m_serverusr_txt.enable = 0;
obj.m_serverpw_txt.enable = 0;
别的
obj.m_login_dropdown.visible ='离开';
obj.m_serverip_txt.enable = 1;
obj.m_serverusr_txt.enable = 1;
obj.m_serverpw_txt.enable = 1;
结尾
结尾
功能Lastlogins = getLastlogin(obj)
如果(存在('savedlogins.mat''文件')〜= 0)
obj.m_logins = load('savedlogins');
lastlogins = obj.m_logins;
结尾
结尾
如果按下登录按钮,则会执行%%方法
功能[IP,USR,PW] = Logincallback(OBJ,SRC,〜)
%%%%无法访问这里的任何成员?
%%%%
结尾
结尾
结尾

答案(1)

穆罕默德萨米
穆罕默德萨米 于5月18日2021年在2:55
您需要将其更改为句柄类而不是值类。
Classdef.logindialog <句柄

s manbetx 845


释放

R2021A

社区宝藏狩猎

找到Matlab Central中的宝藏,并发现社区如何帮助您!

开始狩猎!

被某某人翻译