Обработайте порядок вкладок в виджете с несколькими слоями виджетов вкладок - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь создать плагин для QgIS, используя QT Creator. Плагин представляет собой смесь различных форм, поддержка создания графиков и отчетов.

Работая с некоторыми формами, я хочу иметь возможность использовать клавишу табуляции для навигации в форме. Проблема в том, что у меня есть слои виджетов со вкладками, и кажется, что пользовательский интерфейс имеет только один глобальный список tab order? Я хотел бы иметь одну отдельную tab order на вкладку, имеет ли смысл? Возможно ли это?

Я активировал tab order в QT и взял экран печати, я знаю, как изменить порядок, но делать это очень грязно, нажимая на все в правильном порядке, если у меня есть другие 100 элементов ..

Tabs in tabs

1 Ответ

0 голосов
/ 09 сентября 2018

У вас есть 2 варианта.

Первый - установить все 100+ вкладок из графического интерфейса дизайнера. Вы можете переключаться между вкладками в режиме вкладок, используя обзор всех ваших виджетов справа от области дизайна. Обратите внимание, что внутренне, он хранится только «какой виджет следует за каким» в фокусе вкладки. Нумерация в конструкторе делается только для того, чтобы сделать эту «цепочку» видимой. Однако большая проблема в этом варианте заключается в том, что вам придется переделывать весь процесс всякий раз, когда вы добавляете или удаляете что-то из своего пользовательского интерфейса.

Таким образом, вы должны, вероятно, использовать второй вариант и делать вкладки в коде после вызова функции setupUi. Это делается с помощью функции QWidget::setTabOrder. Он сообщает каждому виджету, на какой из них следует фокусироваться, когда он имеет фокус и нажата вкладка. Простой пример будет:

MyClass::MyClass(QWidget *parent) : 
    QWidget{parent},
    ui{new Ui::MyClass}
{
    ui->setupUi(this);

    QWidget::setTabOrder(ui->outerTabBar, ui->innerTabBar);
    QWidget::setTabOrder(ui->comboBox1, ui->button1);
    // ....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...