【问题标题】:Gtk suppres focus-outGtk 禁止关注焦点
【发布时间】:2011-10-25 06:26:28
【问题描述】:

在我看来,验证用户输入的最佳位置是输入类型小部件的焦点输出事件处理程序(但这只是我的想法)。我尝试从 focus-out-event 返回 TRUE 的想法是这样可以避免将焦点转移到下一个控件并保持对当前小部件的关注,但这不好(不能按需要工作)。

在验证未通过时抑制将焦点转移到下一个控件的正确方法以及在此类小部件(gtkEntry、gtkSpinButton 等)上放置验证代码的位置以可用于通过鼠标和鼠标调用的信号键盘操作?

【问题讨论】:

    标签: gtk


    【解决方案1】:

    这不是一个好主意...焦点始终(应该)归用户所有。也就是说,用户应该能够将焦点移动到他们认为合适的地方。如果你试图根据你能想象到的任何逻辑来引导焦点或阻止焦点移动,你可能会挫败他们。

    这肯定会让我感到沮丧!比如说我在一个盒子里写了一个错误的数据,然后我说,“嘿,那是错误的!我想选择那里的数据,复制并粘贴到这里”。但我不能这样做,因为程序不会让我离开我现在所在的框而不写一个可接受的数据。我必须删除错误的数据并输入一些东西......只是不好。

    验证用户条目的最佳方法是在您实际使用它时进行操作。无论是在您保存它时,还是在您使其生效时。然后你甚至可以做一个弹窗说有错误,当它关闭时,将焦点移到第一个错误上。

    如果您认为用户可以从他做错的早期警告中受益,您可以使用颜色(如果有错误,将框涂成黄色/红色),或者在框旁边添加一个小的错误图标。这比移动焦点的破坏性要小得多。

    【讨论】:

    • 我同意,在大多数情况下,最好在最终操作(例如)“保存”之前进行整体验证,但在某些情况下应该控制和限制输入。在这种情况下,输入应该是“在范围内”,如果不是,那么小部件应该保持焦点,直到输入有效数据。那么,如果需要,如何做到这一点,避免专注于前进?
    猜你喜欢
    • 2016-05-06
    • 1970-01-01
    • 2017-10-22
    • 1970-01-01
    • 1970-01-01
    • 2015-10-08
    • 2010-12-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多