2

在使用 Matlab 的 GUIDE 为按钮指定回调类型时,有几个选项,其中两个描述如下:(引用自 Matlab 文档的词)

  1. ButtonDownFcn:当用户在指针位于组件或图形的五个像素内或五个像素内时按下鼠标按钮时执行

  2. 回调:控制动作。例如,当用户单击按钮或选择菜单项时执行。

描述似乎暗示他们做同样的事情。这两种回调类型有什么区别?

4

2 回答 2

4

ButtonDownFcn您在 uicontrol 上按下鼠标按钮时,回调应该触发,无论您是否释放鼠标按钮,以及您的操作是否最终激活 uicontrol。

Callback激活 uicontrol 时应触发回调。激活对于不同的 uicontols 意味着不同的东西——对于按钮来说,它意味着按钮被按下,对于复选框来说,它意味着复选框被选中或取消选中,对于编辑框来说,它意味着文本内容被修改。

假设您有一个带有Callback回调的按钮,但没有ButtonDownFcn回调。如果将鼠标悬停在按钮上,单击并按住鼠标,离开按钮,然后释放,则Callback不应触发回调,因为按钮未激活。但是如果它有一个ButtonDownFcn回调,那么一旦你第一次点击鼠标,它就会被触发,即使按钮最终没有被激活。

如果两者都有,并且您完全单击并释放按钮以激活它,则ButtonDownFcn应该首先触发,因为它会在激活之前的向下单击时触发。

于 2013-06-05T13:12:00.790 回答
0

激活 uicontrol 时应触发回调回调。激活对于不同的 uicontols 意味着不同的东西 - 对于按钮来说,它意味着按钮被按下,对于复选框来说,它意味着复选框被选中或取消选中,对于编辑框来说,它意味着文本内容被修改

ButtonDownFcn 回调应该在您在 uicontrol 上按下鼠标按钮时触发,无论您是否释放鼠标按钮,以及您的操作是否最终激活 uicontrol。

于 2015-01-28T17:15:12.547 回答