LINUX.ORG.RU

Qt IP адрес


0

1

Народ,подскажите мне по такому вопросу.Мне нужно в обычное QLabel вводит IP адрес.Проблема может быть в том,что юзверь может ввести не валидный адресок типа 354.265.72.981. Ввод идёт кнопками(QPushButton),которые я создал и всё енто бежит под Linux Embedded с архитектурой ARM.

Как мне с этой задачей справится?

P.S.Да ещё кое что.Кнопка с точкой отсутствует. Т.е. самому нужно автоматически вводить.

Может стоит использовать что-то другое,а не QLabel?


данный пример фильтрации есть в асистенте.

MikeDM ★★★★★
()

см. Джасмин бланшет главу про создание своего виджета. да и в прочие книги заглянуть советую, это все идет в первых главах

frozenix ★★★
()

> Ввод идёт кнопками(QPushButton)

а если понадобиться вставить адрес из буфера обмена ?
делай простое поле и проверяй через QHostAddress

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

Как разница валидатору что как ты ввел, он один хрен регулярным выражением проверит.

erfea ★★★★★
()

Думаю, ТСу не помешает прочитать вот это.

erfea ★★★★★
()

> Кнопка с точкой отсутствует. Т.е. самому нужно автоматически вводить.

А как ввести адрес 10.254.15.3? Каким образом систем догадается, что точку надо ставить после 10, а не ждать следующего символа?

anonymous
()

Проверяй через regexp правильность адреса и показывай ошибку.

alex_custov ★★★★★
()

Готовый быдлокод.

bool MyDialog::validate()
{
	QString ip = ui.m_ipAddress->text();
	QRegExp  regExp;
	QString pattern;

	pattern.append("(([1-9]{1})|");
	pattern.append("([1-9]{1}[0-9]{1})|");
	pattern.append("([1]{1}[0-9]{2})|");
	pattern.append("([2]{1}[0-4]{1}[0-9]{1})|");
	pattern.append("([2]{1}[5]{1}[0-5]{1}))");

	for(int i=0;i<3;i++)
	{
		pattern.append("([.]{1})");		
		pattern.append("(([0-9]{1})|");
		pattern.append("([1-9]{1}[0-9]{1})|");
		pattern.append("([1]{1}[0-9]{2})|");
		pattern.append("([2]{1}[0-4]{1}[0-9]{1})|");
		pattern.append("([2]{1}[5]{1}[0-5]{1}))");
	}

	regExp.setPattern(pattern);
	if(!regExp.exactMatch(ip))
	{
		ui.m_ipAddress->setStyleSheet("border-width: 2px;border-style: solid;border-color: red;");		
		return false;
	}
	return true;
}
alpha2
()
Ответ на: комментарий от alpha2

> "([2]{1}[5]{1}[0-5]{1}))"

как ты потом в этом месиве разбираешься?

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