我已經使用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順序列表中計算索引。