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