我有一个包含多个LineEdits和其他元素的表单,并希望通过按返回键从一个跳转到下一个。 我发现Return键而不是/ tab对tab键更加用户友好。
如果我使用returnPressed()
和setFocus()
,我可能会这样做,但我希望有一个更好的解决方案。
有没有办法修改内置的Tab键顺序也可以使用 返回?
如果没有,完成上述工作的最佳方法是什么?
答案 0 :(得分:3)
您可能正在寻找事件处理程序。 (QEvent
)
bool MyWidget::event(QEvent *event)
{
if (event->type() == QEvent::KeyPress) {
QKeyEvent *ke = static_cast<QKeyEvent *>(event);
if (ke->key() == Qt::Key_Tab) {
// special tab handling here
return true;
}
} else if (event->type() == MyCustomEventType) {
MyCustomEvent *myEvent = static_cast<MyCustomEvent *>(event);
// custom event handling here
return true;
}
return QWidget::event(event);
}
任何按键都可轻松调节。
例如,如果按下返回,则模拟制表键按下事件。
答案 1 :(得分:0)
如前所述,覆盖QWidget::keyPressEvent
效率更高某些代码:
protected:
void keyPressEvent(QKeyEvent *event) override;
void MyWidget::keyPressEvent(QKeyEvent *event){
if(event->key()==Qt::Key_Return){
this->focusNextChild();
}
}