matlab appdesigner 如何保留上次设置的参数

请教一下各位,appdesigner界面如何保留上次设置的参数,按照网上的方法添加closerequest回调函数把里面的delete(app)屏蔽,然后添加set(gcf,'visible','off')之后运行界面关不掉,如何解决这个问题

可能是delete(app)语句被屏蔽了,而这个语句是关闭应用程序的关键。不过,你可以尝试使用其他方法来隐藏应用程序窗口,而不是使用set(gcf,'visible','off')。
一种常用的方法是使用应用程序对象的Visible属性来控制应用程序窗口的可见性。你可以将该属性设置为'off'来隐藏窗口,并在需要关闭应用程序时将其设置为'on'来显示窗口。
下面是一个示例代码,展示了如何在关闭请求时隐藏应用程序窗口,同时保留之前的设置参数:

function appdesigner_template

    % 创建或加载应用程序对象
    if ~isappdata(0, 'MyAppData')
        % 初始化应用程序对象
        app = appdesigner;
        % 将应用程序对象存储到根应用程序数据中
        setappdata(0, 'MyAppData', app);
    else
        % 从根应用程序数据中获取应用程序对象
        app = getappdata(0, 'MyAppData');
        % 恢复之前的设置参数
        % ...
    end

    % 监听应用程序窗口的关闭请求
    set(app.UIFigure, 'CloseRequestFcn', @closeApp);

    % 显示应用程序窗口
    set(app.UIFigure, 'Visible', 'on');

    % 其他应用程序逻辑
    % ...

end

% 关闭应用程序时的回调函数
function closeApp(src, event)
    % 获取应用程序对象
    app = getappdata(0, 'MyAppData');
    % 保存设置参数
    % ...
    % 隐藏应用程序窗口
    set(app.UIFigure, 'Visible', 'off');
    % 阻止默认的关闭行为
    %delete(app);
end

这个例子中,应用程序对象存储在根应用程序数据中,以便可以在关闭请求时使用。在关闭请求回调函数中,我们将应用程序窗口的可见性设置为'off',以隐藏窗口,并阻止了默认的关闭行为(delete(app)被注释掉)。通过这种方式,应用程序窗口会隐藏,但应用程序对象仍然保留在内存中,以便下次显示时可以恢复之前的设置参数。

请根据你的实际需求进行适当的修改。希望这对你有帮助!

UI之前,先设置传入参数,然后执行子GUI的OpenFcn,执行完子GUI后,通过OutputFcn返回参数,并在主GUI中接收。以下是示例代码:

% 主GUI中调用子GUI function button_callback(app, event) parameter = app.ParameterEditField.Value; subapp = SubApp('InputParameter', parameter); uiwait(subapp.UIFigure); parameter_out = subapp.output_parameter; app.OutputParameterEditField.Value = parameter_out;

% 子GUI中的OpenFcn function subapp_OpeningFcn(subapp, eventdata, handles, varargin) % 输入参数 handles.input_parameter = varargin{1}; % ... 界面设计 ... % 结束函数 guidata(subapp.UIFigure, handles); uiwait(subapp.UIFigure);

% 子GUI中的OK按钮回调函数 function ok_button_callback(hObject, eventdata, handles) % 处理结果并传出 handles.output_parameter = handles.ResultEditField.Value; guidata(hObject, handles); uiresume(handles.figure1); delete(hObject);

% 子GUI中的Cancel按钮回调函数 function cancel_button_callback(hObject, eventdata, handles) % 取消操作,传出空值 handles.output_parameter = []; guidata(hObject, handles); uiresume(handles.figure1); delete(hObject);

% 子GUI中的OutputFcn function varargout = subapp_OutputFcn(subapp, eventdata, handles) % 返回输出参数 varargout{1} = handles.output_parameter; delete(subapp.UIFigure);