3

我想在 MATLAB GUI 中有一个“编辑”框,上面写着“在此处键入搜索”。当用户在框内单击时,我希望“在此处键入搜索”消失并为用户提供一个空的编辑框以开始输入...

有任何想法吗?

4

4 回答 4

4

至少在我的系统上,当我使用以下代码设置用户输入框/窗口时

prompt    = 'Enter search terms:';
dlg_title = 'My input box';
num_lines = 1;
defAns    = {'TYPE_SERACH_HERE'};

answer = inputdlg(prompt, dlg_title, num_lines, defAns);

默认文本TYPE_SEARCH_HERE突出显示,因此我可以开始输入以将其替换为我想要的任何内容。

编辑或者,如果您有一个现有的uicontrol编辑框,您可以执行以下操作:

function hedit = drawbox()

  hedit = uicontrol('Style', 'edit',...
      'String', 'deafult',...
      'Enable', 'inactive',...
      'Callback', @print_string,...
      'ButtonDownFcn', @clear);

end

function clear(hObj, event) %#ok<INUSD>

  set(hObj, 'String', '', 'Enable', 'on');
  uicontrol(hObj); % This activates the edit box and 
                   % places the cursor in the box,
                   % ready for user input.

end

function print_string(hObj, event) %#ok<INUSD>

  get(hObj, 'String')

end
于 2012-01-05T15:11:35.110 回答
1

好的,所以我有一个解决问题的方法,它完美无缺!!

但是,我很沮丧,因为我完全不知道它为什么会起作用......

  1. 在 GUIDE 中创建一个编辑文本框并右键单击它以打开属性检查器。
  2. 将文本“TYPE TEXT HERE”添加到“字符串”属性
  3. 找到名为“Enable”的属性并将其切换为“inactive”
  4. 创建一个 buttonDownFnc(也可以在属性检查器中完成)
  5. 使用以下代码:

    函数 myEditBoxTagGoesHere_ButtonDownFcn(hObject, eventdata, 句柄)

    % 将“启用”状态切换为 ON

    设置(hObject,“启用”,“开”);

    % 创建 UI 控件

    uicontrol(handles.myEditBoxTagGoesHere);

如果有人能解释为什么 uicontrol 在鼠标左键单击时突出显示文本,那就太好了!

于 2013-08-09T19:12:52.260 回答
1

克里斯,您必须单击 uicontrol 边框才能使 ButtonDownFcn 发生。如果您编辑框内单击,则不会发生

于 2013-05-30T19:41:00.413 回答
-2

Hooplator15,它之所以有效,是因为当 Enable 为 Off 时,编辑文本就像按钮:

  • 如果 Enable == 'on'(编辑文本 Enable),函数 _ButtonDownFcn 会在鼠标按下 5 像素边框时执行;

  • 否则,它会在鼠标按下 5 像素边框或编辑文本(如按钮)时执行。

于 2020-12-14T20:22:47.467 回答