LINUX.ORG.RU

Проверка полей qt

 


1

2

Привет всем.

Есть диалог, наследованный от QWidget, и в нём порядка 10 QLineEdit'ов. В некоторые из них необходимо забивать IP адреса, а в некоторые - просто текстовые данные.

Возникла необходимость проверять введённые данные во время ввода, т.е. пользователь вводит IP адрес, и если он валиден, то background этого QLineEdit сделать зелёным, если нет - красным (образно). Почти то же самое и для текста - если пусто, то фон - красный.

Может кто подскажет, что можно придумать, дабы не морочиться с переопределением QLineEdit? (поля по виджету раскиданы дизайнером, и вручную их раскидывать не очень-то хочется, да и ручная проверка 10+ полей внесёт кучу ненужного кода)

★★★★★

Для ввода IP-шников можно попробовать вот это http://doc.qt.nokia.com/4.7-snapshot/qlineedit.html#inputMask-prop

Так же можно сделать 2 слота на проверку значений (text/ip) и подцепить editingFinished () из эдитов в эти слоты. В слоте уже проверять значение и через styleSheet раскрашивать эдиты во все цвета радуги.

trex6 ★★★★★
()
Ответ на: комментарий от trex6

Маска уже есть у них, однако в слоте невозможно определить, какой именно объект отправил сигнал, поэтому придётся либо подключать сигнал каждого edit'а к отдельному слоту, либо наследовать QLineEdit и в нём сделать дополнительный сигнал. Но я выше написал, почему это нежелательно.

false ★★★★★
() автор топика

Каюсь, сейчас в документации нашёл:

Для случаев, когда вам может понадобиться информация об отправителе сигнала, Qt предоставляет функцию QObject::sender(), возвращающую указатель на объект, который отправил сигнал.

false ★★★★★
() автор топика
Ответ на: комментарий от false

в слоте невозможно определить, какой именно объект отправил сигнал

Возможно (QObject::sender), но это хреновая практика.

anonymous
()

дабы не морочиться с переопределением QLineEdit? (поля по виджету раскиданы дизайнером, и вручную их раскидывать не очень-то хочется, да и ручная проверка 10+ полей внесёт кучу ненужного кода)

Ты ведь в курсе, что наследников QLineEdit тоже можно раскидывать дизайнере?

anonymous
()
Ответ на: комментарий от anonymous

Ты ведь в курсе, что наследников QLineEdit тоже можно раскидывать дизайнере?

Ну-ка, просветите-ка ...

false ★★★★★
() автор топика
Ответ на: комментарий от nu11

хотя тебе и банальный QObject::sender() подойдет, как отметили выше

nu11 ★★★★★
()
Ответ на: комментарий от anonymous

Был бы у них еще формат файлов более вменяемый, можно было бы попробовать, но то что есть сейчас - кромешный ад.

trex6 ★★★★★
()

Спасибо всем.

false ★★★★★
() автор топика
Ответ на: комментарий от erfea

QValidator и QLineEdit::setValidator()

Это уже есть.

Маска уже есть у них

trex6 ★★★★★
()

дабы не морочиться с переопределением QLineEdit

/0, это не «морочится», а правильный способ решения задачи без костылей.

annulen ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.