2016-10-10 2 views
2

У меня есть следующая конструкцияКак установить порядок вкладок с помощью продвинутых виджетов?

QWidget 
    QFrame promoted to FooComponent 
    QLineEdit a (internal tab order 1) 
    QLineEdit b (tab order 2) 
    QLineEdit c (tab order 1) 

В Qt Creator (дизайнер) не может установить порядок табуляции для FooComponent. Поэтому, когда я активирую QWidget, я вижу курсор в c, но я бы хотел, чтобы он находился в a.

Как я могу обрабатывать порядок вкладок с помощью каскадных компонентов?

ответ

2

Вы можете сделать это с помощью setFocuProxy. В FooComponent установите фокус-прокси для первого дочернего виджета в его внутреннем табу-порядке.

Затем в Qt Designer, измените focusPolicy продвигаемого QFrame к TabFocus, и сбросить вкладку порядка, так что он находится в нужном месте в последовательности.

+0

Очень хороший совет. Это работает, только исходный фокус находится не в первом поле по некоторым причинам. Я попробовал 'setFocus', но он не работает. Но сам порядок вкладок работает, только он не начинается с «поля 1». –

+0

@HorstWalter. Я создал пример с использованием дизайна в вашем вопросе, и все это отлично работает для меня. Вы уверены, что вы установили порядок вкладок в 'FooComponent', а фокус-прокси установлен в поле 1? Если ваш реальный дизайн более сложный, напишите ui-файл. – ekhumoro

Смежные вопросы