获得焦点(或标签)订单

时间:2013-11-22 21:16:04

标签: qt qt-designer

我使用Qt Designer设计了用户界面,并使用“编辑标签顺序”模式设置了标签顺序。

现在我想知道的(由于其他原因,不那么重要)是如何在ui中获取特定QWidget的Tab键顺序?

我的意思是如果我有几个小部件,并说已经设置了Tab键顺序,有没有办法做类似的事情:

int nb = widget1->getTabOrder();

1 个答案:

答案 0 :(得分:10)

无法将Tab键顺序作为整数。 如果您查看uic工具从您的ui文件创建的C ++代码,它将调用QWidget::setTabOrder()几次,并且该方法只需要两个QWidget指针。因此,Qt内部甚至不将Tab键顺序存储为整数,而是存储为QWidget指针的链式列表。

您可以使用QWidget::nextInFocusChain()QWidget::previousInFocusChain()查询该链式列表。这将为您提供窗口小部件的整个焦点链,其中包含所有子窗口小部件,并按正确的顺序排列。然后,您可以通过检查其focusPolicy,启用状态和可见状态来获取实际Tab键顺序列表,就像QWidget::focusNextPrevChild()函数的内部实现一样。如果你真的需要一个整数索引,你需要自己设计一个算法来计算得到的标签顺序列表中的索引。