【问题标题】:How to move the focus from a QLineEdit to a QTableView editable cell如何将焦点从 QLineEdit 移动到 QTableView 可编辑单元格
【发布时间】:2015-04-28 12:05:08
【问题描述】:

我使用的是QMainWindow,其中很少有QLineEdits,还有一些QPushButtons。当焦点位于QLineEdit 时(如果我在QLineEdit 中输入内容)并且如果我按F5 键,我想显示QDialog

QDialog 包含一个 QTableView。我的问题是,当我按下 F5 键时,我想将焦点从QLineEdit 移动到QTableView 的单元格。我怎样才能做到这一点?

【问题讨论】:

  • 能否请您提供您之前尝试将焦点设置到特定单元格的代码并告诉我们它到底出了什么问题?

标签: qt qwidget qtableview qlineedit qt5.4


【解决方案1】:

子类 QLineEdit 并覆盖 keyPressEvent() 以检测何时按下 F5 键,或在 QLineEdit 上安装事件过滤器。

如果您在键事件处理期间创建并显示对话框,对话框将自动接收事件焦点,并且对话框中第一个接受焦点的小部件将成为焦点小部件。所以要么让QTableView 成为第一个小部件,要么使用setFocus() 明确地将焦点赋予它。

如果对话框已经构建或者是一个已经打开的非模态对话框,则需要一个指向对话框的指针,以便在按下 F5 键时显示它/给它焦点。

如果你想移动到QTableView中的某个单元格,你当然还需要知道与你的QLineEdit关联的单元格。

【讨论】:

  • 感谢您的建议 Daniel Hedberg。这对我帮助很大。我有另一个问题。如果我使用 QWidget 而不是 QDialog,焦点将如何变化。我知道 QDialog 会自动接收焦点。但是 QWidget 呢?
  • 你需要有一个指向小部件的指针,这样你就可以通过调用widget->setFocus()来给它焦点。如果您发现我的回答有帮助,请随时接受和/或投票。谢谢。
  • 你的回答真的很有帮助,我试过了,它起作用了,当我关闭子小部件时,我想将我的焦点恢复到 QLineEdit(但这不再起作用了)。
猜你喜欢
  • 1970-01-01
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 2015-05-22
  • 2022-12-12
  • 1970-01-01
相关资源
最近更新 更多