获得焦点(或标签)订单

gpa*_*lex 5 qt qt-designer

我使用Qt Designer设计了一个用户界面,我使用"编辑标签顺序"模式设置了标签顺序.

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

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

int nb = widget1->getTabOrder();
Run Code Online (Sandbox Code Playgroud)

Tho*_*ire 10

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

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