我使用Qt Designer设计了用户界面,并使用“编辑标签顺序”模式设置了标签顺序。
现在我想知道的(由于其他原因,不那么重要)是如何在ui中获取特定QWidget的Tab键顺序?
我的意思是如果我有几个小部件,并说已经设置了Tab键顺序,有没有办法做类似的事情:
int nb = widget1->getTabOrder();
答案 0 :(得分:10)
无法将Tab键顺序作为整数。
如果您查看uic工具从您的ui文件创建的C ++代码,它将调用QWidget::setTabOrder()
几次,并且该方法只需要两个QWidget
指针。因此,Qt内部甚至不将Tab键顺序存储为整数,而是存储为QWidget
指针的链式列表。
您可以使用QWidget::nextInFocusChain()
和QWidget::previousInFocusChain()
查询该链式列表。这将为您提供窗口小部件的整个焦点链,其中包含所有子窗口小部件,并按正确的顺序排列。然后,您可以通过检查其focusPolicy,启用状态和可见状态来获取实际Tab键顺序列表,就像QWidget::focusNextPrevChild()
函数的内部实现一样。如果你真的需要一个整数索引,你需要自己设计一个算法来计算得到的标签顺序列表中的索引。