Russian Qt Forum
Май 07, 2024, 04:55 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1]   Вниз
  Печать  
Автор Тема: Неадекватный обход по табуляции составных виджетов Qt4.8.6  (Прочитано 3994 раз)
Crazy Sage
Гость
« : Апрель 12, 2016, 16:29 »

Дано:
Есть кастомный виджет ввода данных, состоящий из нескольких QLineEdit'ов (плюс некоторое количество оформления, не принимающего фокус ввода, а потому не влияющего на ситуацию), в разных режимах может быть либо одно поле, либо три (виджет для ввода координат в метрах либо градусах\минутах\секундах), виджет состоит из комплекта ui\cpp\h-файлов. Скрытые поля также делаются неактивными.
В ui файле прописан порядок обхода полей виджета, первое поле, на которое должен устанавливаться фокус задаётся в качестве focusProxy всего виджета.
Есть плагин к дизайнеру для этого виджета, благодаря чему прямо в дизайнере выставлен порядок обхода на формах, использующих этот виджет. Виджетов на одной форме обычно 2 или 4.
А вот дальше начинается странное. Если на форме два таких виджета, то всё работает корректно в обоих режимах, если же виджетов четыре, то у них сбивается обход по табу.
При этом если они в режиме, когда поле одно, то они просто обходятся в неправильном порядке, если же они в режиме, когда полей три, то фокус перескакивает между виджетами даже не пройдя все поля внутри виджета.
Кто-нибудь может посоветовать, откуда начать копать, чтобы это исправить?
Писать при каждой смене режима вручную всю логику обхода формы через setTabOrder как-то не хочется.
Записан
gil9red
Administrator
Джедай : наставник для всех
*****
Offline Offline

Сообщений: 1805



Просмотр профиля WWW
« Ответ #1 : Апрель 12, 2016, 22:06 »

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

Вряд ли у вас форма будет постоянно менять, один раз укажете вручную Улыбающийся
Записан

Crazy Sage
Гость
« Ответ #2 : Апрель 13, 2016, 16:14 »

То есть это внутренний баг Qt не имеющий изящного обхода?
Записан
Bepec
Гость
« Ответ #3 : Апрель 13, 2016, 17:42 »

Сделайте тестовый пример и можно будет посмотреть. А рассуждать и тем более делать чтото-своё, не имея 100% шанса воссоздать проблему - извиняйте, дело бессмысленное
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.058 секунд. Запросов: 23.