2013-11-22 15 views
5

Qt Designerを使用してユーザーインターフェイスを設計しました。「タブの編集」モードを使用してタブの順序を設定しました。フォーカス(またはタブ)を取得する

私が知りたいことは(他の理由で、それほど重要ではない)、Ui内の特定のQWidgetのタブ順序を取得する方法です。

int nb = widget1->getTabOrder(); 

答えて

10

整数としてタブオーダーを取得する方法はありません。

私はいくつかのウィジェットを持っている、とタブの順序が設定されていると言うならば、私が意味する、のような何かをする方法があります。 uicツールがuiファイルから作成するC++コードを調べると、QWidget::setTabOrder()が数回呼び出され、そのメソッドはただ2つのQWidgetポインタを取ります。したがって、Qtは内部的にタブ順序を整数ではなく、むしろQWidgetポインタの連鎖リストとして保存します。

QWidget::nextInFocusChain()QWidget::previousInFocusChain()でその連鎖リストを照会することができます。これにより、ウィジェット内のすべての子ウィジェットを正しい順序で含む、ウィジェットの全体のフォーカスチェーンが得られます。次に、QWidget::focusNextPrevChild()関数の内部実装と同様に、focusPolicy、enabled状態とvisible状態をチェックすることで、実際のタブ順序リストを取得できます。ここで整数インデックスが本当に必要な場合は、取得したタブオーダーリストからインデックスを計算するアルゴリズムを自分で作成する必要があります。

関連する問題