微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

oop – 在GUI中拖放

是否可以在GUI中创建一个对象,通过将其“位置”属性设置为光标位置,可以通过光标位置(单击时拖动)定义其位置?我应该使用什么功能

解决方法

您可以使用 SELECTMOVERESIZE功能为GUI对象打开移动和调整大小.然后,您只需用鼠标单击并拖动对象即可.这很简单:
set(hObject,'ButtonDownFcn','selectmoveresize');

如果您的GUI对象是uicontrol object,那么不是那么简单,在这种情况下,您必须通过将'Enable' property设置为“off”或“inactive”来禁用该对象,以便执行'ButtonDownFcn'功能而不是'Callback'功能.即使您没有为对象定义回调,也是如此.

您可能还需要在GUI中添加一种方法来打开和关闭对象的移动和调整大小,可能是您可以选择的额外按钮或菜单项.为了说明如何使用按钮执行此操作,这是一个简单的示例,它创建一个带有可编辑文本框和按钮的图形,可以打开和关闭移动和调整可编辑文本框的功能

function GUI_example

  hfigure = figure('Position',[100 100 200 200],...  %# Create a figure
                   'MenuBar','none',...
                   'ToolBar','none');
  hEdit = uicontrol('Style','edit',...               %# Create a multi-line
                    'Parent',hfigure,...             %#   editable text Box
                    'Position',[10 30 180 160],...
                    'Max',2,...
                    'String',{'(type here)'});
  hButton = uicontrol('Style','pushbutton',...       %# Create a push button
                      'Parent',...
                      'Position',[50 5 100 20],...
                      'String','Turn moving on',...
                      'Callback',@button_callback);

  function button_callback(hSource,eventData)        %# nested button callback

    if strcmp(get(hSource,'String'),'Turn moving on')
      set(hSource,'String','Turn moving off');          %# Change button text
      set(hEdit,'Enable','inactive',...                 %# disable the callback
                'ButtonDownFcn','selectmoveresize',...  %# Turn on moving,etc.
                'Selected','on');                       %# display as selected
    else
      set(hSource,'Turn moving on');           %# Change button text
      set(hEdit,'on',...                       %# Re-enable the callback
                'ButtonDownFcn','',...                  %# Turn off moving,'off');                      %# display as unselected
    end

  end

end

注意:虽然文档将'Selected' property列为只读,但我能够毫无问题地修改它.它必须是文档中的拼写错误.

原文地址:https://www.jb51.cc/css/214931.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。