在不同gui 中传递数据的完美解决方法

刚刚自己遇到一个传递参数的问题,研究了一把,感觉效果还不错,贡献给论坛的兄弟们。

方法一:直接带参数传递,
   用途:用于主窗口打开一个子窗口时传递信息。

例子:主窗口(main) 中点击按钮后打开一个新窗口(ShowSQL)显示当前的sql 语句
 
   主窗口代码(main):
       ShowSQL({sqlstr},{'SQL Statement'});  

   子窗口代码(ShowSQL):
       function ShowSQL_OpeningFcn(hObject, eventdata, handles, varargin)
       handles.output = hObject;
       handles.str = varargin{1}; % <-- 就是{sqlstr}
       handles.title = varargin{2}; % <--就是{'SQL Statement'}


方法二:任意窗口间的参数传递,
   用途:如果子窗口也想回传一些参数给主窗口,或者修改主窗口的一些参数,需要利用hObject 和handles 的传递来达成目标
例子:主窗口(main)打开一个子窗口(config)允许选择当前的使用的数据库连接

   主窗口代码(main):
     主窗口原有的一个handles.conn 保存数据库连接配置。
     希望通过子窗口来设置选择不同的数据库
     function setup_uipushtool_ClickedCallback(hObject, eventdata, handles)
        config(hObject,handles);

   子窗口代码(config):
    function config_OpeningFcn(hObject, eventdata, handles, varargin)
    handles.output = hObject;
    handles.obj = varargin{1}; %获得对象指针
    hdl = varargin{2};
    handles.handle = hdl;   %获得句柄列表
    % Update handles structure
    guidata(hObject, handles);

  function uipanel1_SelectionChangeFcn(hObject, eventdata, handles)
    switch get(hObject,'Tag')   % Get Tag of selected object
           case 'db1_radio'
                handles.handle.conn = database('db1','',''); %修改主窗口的数据库配置参数
                     case 'db2_radio'        
                          handles.handle.conn = database('db2','','');     
                     case 'db3_radio'
                          handles.handle.conn = database(‘db3','','');  
           otherwise
      end
             guidata(handles.obj, handles.handle); %保存修改,很重要,否则修改就不成功了
             set(handles.handle.status_text,'String',handles.handle.conn.Instance);
               %顺便把主窗口的文本状态框也修改了。
     
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值