代码之家  ›  专栏  ›  技术社区  ›  Fr33dan

使用制表键更改焦点的Qt事件

  •  1
  • Fr33dan  · 技术社区  · 8 月前

    我有一个UI,我想实现一个表单的自动填充。我已经通过使用事件过滤器来实现了这一点,当QLineEdit基于之前关注的QLineEdit被赋予焦点时,它会填充QLineEdit。

    问题是,我只希望只有当用户使用制表键循环浏览表单时才进行自动填充。如果他们手动点击,那么自动填充可能会成为障碍。

    def eventFilter(self, selected_input, event):
        if event.type() == QEvent.FocusIn:
            if (self.previous_input is not None
                #and selected_via_tab_key
                and selected_input.text() == ""):
                new_value = int(self.previous_input.text()) + 1
                selected_input.setText(str(new_value))
            self.previous_input = selected_input
        return False
    

    有没有任何方法可以检测焦点在这个事件中是如何变化的,或者我可以监测另一个事件中的焦点变化?

    1 回复  |  直到 8 月前
        1
  •  2
  •   mkrieger1 mozway    8 月前

    这个 QFocusEvent 事件具有 reason 方法,它返回一个 FocusReason .

    您可以将其与预定义的枚举值进行比较,如 FocusReason.MouseFocusReason FocusReason.TabFocusReason 以确定行编辑如何接收焦点。

    原始Qt文档链接: