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

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

Страниц: [1]   Вниз
  Печать  
Автор Тема: ip address input widget  (Прочитано 12672 раз)
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« : Апрель 12, 2018, 10:46 »

Собственно хотелось бы нормальный виджет под эту простую задачу(как в винде).

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

Сообщений: 170


Просмотр профиля
« Ответ #1 : Апрель 12, 2018, 11:33 »

Попробовал в виндовом контроле выделить ip адрес полностью, не получилось, выделяется только первый октет.
QLineEdit - универсальное решение. Если вам нужно что-то более специализированное, то нужно писать свой виджет. Наследуйтесь от QLineEdit и переопределяйте функцию рендеринга виджета.
Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #2 : Апрель 12, 2018, 13:12 »

А как рендеринг переопределить? Чтобы текст выделялся и курсор был?
Записан
deMax
Хакер
*****
Offline Offline

Сообщений: 600



Просмотр профиля
« Ответ #3 : Апрель 12, 2018, 13:32 »

ок с курсором понятно. храним переменную bool и инвертируем её в paintevent. cursorPosition() вернет где текст.
Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #4 : Апрель 12, 2018, 15:10 »

при вводе числа переход на следующую ячейку

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

Сообщений: 600



Просмотр профиля
« Ответ #5 : Апрель 12, 2018, 15:44 »

Что не позволяет, точка переходит к следующей ячейке. ctrl+c, ctrl+v, ctrl+a тоже легко реализовать

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

У меня QFrame, внутри 4 QLineEdit. если нажать Enter при редактировании первого элемента фокус возвращаятся нормально на текущую ячейку. А если другие элементы - фокус перелетает на следующую ячейку в таблице и стрелки не перемещают выбранную ячейку.
« Последнее редактирование: Апрель 12, 2018, 16:04 от deMax » Записан
qate
Супер
******
Offline Offline

Сообщений: 1175


Просмотр профиля
« Ответ #6 : Апрель 12, 2018, 17:10 »

я всеже недолюбливаю "умные" поля ввода - каждый делает их по своему разумению
обычный lineedit и проще и все равно проверку делать что введено
и в умный не вставить, например, из браузера адрес, который дописывает http://
но это мои предпочтения
Записан
Страниц: [1]   Вверх
  Печать  
 
Перейти в:  


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