QT:逃离QTabWidget

QT: Escape from QTabWidget

我在其中有一个对话框和一个选项卡 QTabWidget,在该选项卡内有一个 table 视图。请看下面的屏幕截图

问题是,当我在对话框(Telp 文本框)的文本框中按 Tab 键时,它会转到选项卡 Items,然后当我再次单击时,它会转到 Table 视图,但我永远不能离开这个选项卡项目。现在我正在使用 QShortcut 退出此选项卡项并转到对话框上的文本区域。我想使用 Tab 键从这个 Tab Items 中退出。可能吗?

来自文档:

void QWidget::setTabOrder ( QWidget * first, QWidget * second ) [static]

在焦点顺序中将第二个小部件放在第一个小部件之后。

请注意,由于第二个小部件的 Tab 键顺序已更改,您应该这样排序:

 setTabOrder(a, b); // a to b
 setTabOrder(b, c); // a to b to c
 setTabOrder(c, d); // a to b to c to d

不是这样的:

// 错误

 setTabOrder(c, d); // c to d
 setTabOrder(a, b); // a to b AND c to d
 setTabOrder(b, c); // a to b to c, but not c to d

如果 first 或 second 有焦点代理,setTabOrder() 会正确替换代理。

好的,我可以通过子类化 QTableView 并覆盖 keyPressEvent 事件来解决这个问题

void LMJTableView::keyPressEvent(QKeyEvent *event)
{
  if(event->key() == Qt::Key_Tab){
    //event->ignore();
    if (nextWidget!=NULL) {
      nextWidget->setFocus();
    }
  }
  else
    QTableView::keyPressEvent(event);
}