我使用QMainWindow
,其中QLineEdits
少,QPushButtons
。当焦点位于QLineEdit
时(如果我在QLineEdit
中键入内容)并且如果我按F5键,我想显示QDialog
。
QDialog
包含QTableView
。我的问题是,当我按下F5键时,我想将焦点从QLineEdit
移动到QTableView
的单元格。我怎样才能做到这一点?
答案 0 :(得分:1)
子类QLineEdit
并覆盖keyPressEvent()
以检测何时按下F5键,或在QLineEdit
上安装事件过滤器。
如果在按键事件处理期间创建并显示对话框,则对话框将自动接收事件中的焦点,对话框中接受焦点的第一个窗口小部件将成为焦点窗口小部件。因此,要么让QTableView
成为第一个窗口小部件,要么使用setFocus()
明确地将焦点放在窗口上。
如果对话框已经构建或者是一个已打开的非模态对话框,则需要一个指向对话框的指针,以便在按下F5键时显示/给它焦点。
如果您要移至QTableView
中的某个单元格,您当然还需要知道与您的QLineEdit
相关联的单元格。