声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2677|回复: 11

[GUI界面] 退出确认的问题

[复制链接]
发表于 2007-6-19 22:37 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
书上说: set(gcf,'CloseReqestFcn',' ') 该语句用空字符串代替'CloseReqestFcn',因此就禁止了通过关闭按钮来实现关闭窗口功能(确实可以)。set函数的第二个字符串输入可以是任何合法的Matlab语句序列。通过该字符串的设置,用户可以在关闭窗口之前,获得确认关闭的提示信息。这句没理解透,一直实现不了关闭确认的功能。
      哪位高手给解释下吧:loveliness:
回复
分享到:

使用道具 举报

发表于 2007-6-20 10:59 | 显示全部楼层
set(gcf,'CloseRequestFcn','exit')

[ 本帖最后由 w89986581 于 2007-6-20 11:01 编辑 ]
 楼主| 发表于 2007-6-20 11:18 | 显示全部楼层

回复 #2 w89986581 的帖子

你的招太强了,一下子把matlab的窗口全关完了。我是想在退出这个gui界面的时候进行确认,下边是我退出菜单的callback的一部分,可以实现退出确认。如何通过在用户关闭gui界面右上角的关闭按钮也实现退出确认呢?代码怎么加?
question='确定关闭该界面?';
  button=questdlg(question,'退出确认','Yes','No','No');
  switch button
      case 'No'
        quit cancel;
      otherwise
        close;
  end
发表于 2007-6-20 12:04 | 显示全部楼层
原帖由 花如月 于 2007-6-20 11:18 发表
你的招太强了,一下子把matlab的窗口全关完了。我是想在退出这个gui界面的时候进行确认,下边是我退出菜单的callback的一部分,可以实现退出确认。如何通过在用户关闭gui界面右上角的关闭按钮也实现退出确认呢? ...


function Untitled3
figure;
set(gcf,'CloseRequestFcn',@my_closefcn);

function my_closefcn(src,evnt)
% User-defined close request function
% to display a question dialog box
selection = questdlg('Close This Figure?',...
    'Close Request Function',...
    'Yes','No','Yes');
switch selection,
    case 'Yes',
       delete(gcf)
    case 'No'
       return
end


[ 本帖最后由 花如月 于 2007-8-1 19:05 编辑 ]
 楼主| 发表于 2007-6-21 21:49 | 显示全部楼层
谢谢8兄指点,已经实现了。不过就是不明白my_closefcn(src,evnt)的2个参数是做什么用的?因为我刚开始的时候,把2个参数忘了加结果就退不出去了。加上后正常,在用set(gcf,'CloseRequestFcn',@my_closefcn);好像也没用到输入参数

[ 本帖最后由 eight 于 2007-6-21 22:28 编辑 ]
发表于 2007-6-21 22:29 | 显示全部楼层
原帖由 花如月 于 2007-6-21 21:49 发表
谢谢8兄指点,已经实现了。不过就是不明白my_closefcn(src,evnt)的2个参数是做什么用的?因为我刚开始的时候,把2个参数忘了加结果就退不出去了。加上后正常,在用set(gcf,'CloseRequestFcn',@my_closefcn);好像 ...


这个我也不太懂,不过估计其作用类似消息传递,一个是源(也许是句柄),另一个是事件
发表于 2007-7-4 12:23 | 显示全部楼层
帮助里有这个问题的,关于函数句柄的语法,原话:

In Handle Graphics, functions that you want to use as function handle callbacks must define at least two input arguments in the function definition:
The handle of the object generating the callback (the source of the event)
The event data structure (can be empty for some callbacks)
 楼主| 发表于 2007-7-4 21:40 | 显示全部楼层

回复 #7 geoer 的帖子

谢谢楼上的,我英文不好。所以很少看英文的帮助文档,以后得加强学习了
发表于 2007-8-1 16:59 | 显示全部楼层

我怎么实现不了

http://forum.vibunion.com/forum/viewthread.php?tid=46800&page=1#pid245354

你好啊!
你写的这个程序添加到哪里?我怎么实现不了?
 楼主| 发表于 2007-8-1 17:09 | 显示全部楼层

回复 #9 pxq911 的帖子

4楼正解
发表于 2007-8-1 18:19 | 显示全部楼层

摸索了一个小时,终于解决了!

终于解决了,太爽了!!!
    在function varargout = pxq3_OutputFcn(hObject, eventdata, handles)添加相应代码就可以解决了!
    以下是我的程序:
    function varargout = pxq3_OutputFcn(hObject, eventdata, handles)
varargout{1} = handles.output;
set(gcf,'CloseRequestFcn',@my_closefcn);   %关闭窗口程序
function my_closefcn(src,evnt)
global System_Data;
if System_Data
    ErrorDlg('正在运行仿真,请停止!');
    return;
else close;
end
发表于 2009-3-2 12:44 | 显示全部楼层
4楼真乃高人啊
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-4 10:34 , Processed in 0.073967 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表