Как установить порядок табуляции с продвигаемыми виджетами?

у меня следующая конструкция

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.

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


person Horst Walter    schedule 10.10.2016    source источник


Ответы (1)


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

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

person ekhumoro    schedule 11.10.2016
comment
Очень хороший намек. Работает, только начальный фокус почему-то не в первом поле. Я пробовал setFocus, но это не работает. Но сам порядок табуляции работает, только начинается он не с поля 1. - person Horst Walter; 11.10.2016
comment
@ХорстВальтер. Я создал пример, используя дизайн в вашем вопросе, и у меня все работает нормально. Вы уверены, что установили порядок табуляции в FooComponent и установлен ли фокус-прокси в поле 1? Если ваш реальный дизайн сложнее, опубликуйте файл пользовательского интерфейса. - person ekhumoro; 11.10.2016