2013-11-22 120 views
5

我已經使用Qt Designer設計了一個用戶界面,並且已經使用「編輯標籤順序」模式設置了標籤順序。獲得焦點(或標籤)順序

現在我想知道的(出於其他原因,不是那麼重要)是如何獲得UI中特定QWidget的Tab順序?

我的意思是,如果我有幾個小部件,並說Tab順序已定,有沒有辦法做這樣的事情:

int nb = widget1->getTabOrder(); 

回答

10

有沒有辦法讓Tab順序爲整數。 如果您查看ui工具從您的ui文件創建的C++代碼,它將調用QWidget::setTabOrder()幾次,該方法只需要兩個QWidget指針。因此,Qt內部甚至不會將製表符的順序存儲爲整數,而是將其作爲指針的鏈接列表QWidget

您可以使用QWidget::nextInFocusChain()QWidget::previousInFocusChain()查詢該鏈接列表。這將爲您提供小部件的整個焦點鏈,其中包含其內部的所有子部件,並以正確的順序排列。然後,您可以通過檢查其focusPolicy,啓用狀態和可見狀態來獲得真正的Tab鍵順序列表,就像QWidget::focusNextPrevChild()函數的內部實現一樣。如果你真的需要一個整數索引,你需要自己設計一個算法,從那個獲得的Tab順序列表中計算索引。