Crazy Sage
Гость
|
|
« : Апрель 12, 2016, 16:29 » |
|
Дано: Есть кастомный виджет ввода данных, состоящий из нескольких QLineEdit'ов (плюс некоторое количество оформления, не принимающего фокус ввода, а потому не влияющего на ситуацию), в разных режимах может быть либо одно поле, либо три (виджет для ввода координат в метрах либо градусах\минутах\секундах), виджет состоит из комплекта ui\cpp\h-файлов. Скрытые поля также делаются неактивными. В ui файле прописан порядок обхода полей виджета, первое поле, на которое должен устанавливаться фокус задаётся в качестве focusProxy всего виджета. Есть плагин к дизайнеру для этого виджета, благодаря чему прямо в дизайнере выставлен порядок обхода на формах, использующих этот виджет. Виджетов на одной форме обычно 2 или 4. А вот дальше начинается странное. Если на форме два таких виджета, то всё работает корректно в обоих режимах, если же виджетов четыре, то у них сбивается обход по табу. При этом если они в режиме, когда поле одно, то они просто обходятся в неправильном порядке, если же они в режиме, когда полей три, то фокус перескакивает между виджетами даже не пройдя все поля внутри виджета. Кто-нибудь может посоветовать, откуда начать копать, чтобы это исправить? Писать при каждой смене режима вручную всю логику обхода формы через setTabOrder как-то не хочется.
|