QT:逃离QTabWidget

时间:2015-04-12 04:14:28

标签: qt qtabwidget

我有一个对话框和一个标签QTabWidget,在该标签内有一个表格视图。请参阅下面的屏幕截图 enter image description here

问题是,当我从对话框(文本框Telp)中的文本框中按Tab键时,它会转到选项卡项目,然后当我再次单击它进入表视图但我永远无法退出此选项卡项目。现在我正在使用QShortcut从此Tab项中转义并转到对话框上的文本区域。我想使用Tab键来逃避此Tab项目。有可能吗?

2 个答案:

答案 0 :(得分:0)

来自doc:

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

如果第一个或第二个具有焦点代理,则setTabOrder()正确替换代理。

答案 1 :(得分:0)

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

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