Russian Qt Forum

Qt => Пользовательский интерфейс (GUI) => Тема начата: deMax от Апрель 12, 2018, 10:46



Название: ip address input widget
Отправлено: deMax от Апрель 12, 2018, 10:46
Собственно хотелось бы нормальный виджет под эту простую задачу(как в винде).

Поле вглядит как QLineEdit, точки делят окно ввода на 4 равные части, цифры между точками выравненны по центру, при вводе числа переход на следующую ячейку и её выделение(чтоб затереть числа)...
Вроде есть примеры где 4 QLineEdit засовывают в QFrame, я допилил такой. Но проблемы с тем что я например не могу выделить текст сразу в нескольких ячейках. QLineEdit::setInputMask не дает возможности выровнять по центру числа(когда их меньше 3ех).


Название: Re: ip address input widget
Отправлено: Swa от Апрель 12, 2018, 11:33
Попробовал в виндовом контроле выделить ip адрес полностью, не получилось, выделяется только первый октет.
QLineEdit - универсальное решение. Если вам нужно что-то более специализированное, то нужно писать свой виджет. Наследуйтесь от QLineEdit и переопределяйте функцию рендеринга виджета.


Название: Re: ip address input widget
Отправлено: deMax от Апрель 12, 2018, 13:12
А как рендеринг переопределить? Чтобы текст выделялся и курсор был?


Название: Re: ip address input widget
Отправлено: deMax от Апрель 12, 2018, 13:32
ок с курсором понятно. храним переменную bool и инвертируем её в paintevent. cursorPosition() вернет где текст.


Название: Re: ip address input widget
Отправлено: qate от Апрель 12, 2018, 15:10
при вводе числа переход на следующую ячейку

ненавижу этот виджет, например при вводе 1.2.3.4
возможно для тупых он и хорош, но по быстрому ввести не позволяет, копипаста с изменением неудобна


Название: Re: ip address input widget
Отправлено: deMax от Апрель 12, 2018, 15:44
Что не позволяет, точка переходит к следующей ячейке. ctrl+c, ctrl+v, ctrl+a тоже легко реализовать

Засунул его как QStyledItemDelegate, при окончании редактирования как вернуть фокус таблице?

У меня QFrame, внутри 4 QLineEdit. если нажать Enter при редактировании первого элемента фокус возвращаятся нормально на текущую ячейку. А если другие элементы - фокус перелетает на следующую ячейку в таблице и стрелки не перемещают выбранную ячейку.


Название: Re: ip address input widget
Отправлено: qate от Апрель 12, 2018, 17:10
я всеже недолюбливаю "умные" поля ввода - каждый делает их по своему разумению
обычный lineedit и проще и все равно проверку делать что введено
и в умный не вставить, например, из браузера адрес, который дописывает http://
но это мои предпочтения