Название: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 10:44 Доброе утро, форумчане! Дайте пожалуйста совет, как лучше сделать. Необходимо сделать окно для ввода Ip-адреса, как в свойствах Протокол Интернета. Правильно ли будет наследоваться от QLineEdit или надо как-то по другому? Заранее спасибо...
Название: Re: Нестандартный QLineEdit Отправлено: Пантер от Сентября 21, 2011, 10:55 Посмотри про QValidator.
Название: Re: Нестандартный QLineEdit Отправлено: BRE от Сентября 21, 2011, 11:00 Название: Re: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 11:03 спасибо, сейчас посмотрю:)
Название: Re: Нестандартный QLineEdit Отправлено: alexman от Сентября 21, 2011, 11:22 Вид будет отличаться от картинки.
Название: Re: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 11:23 не страшно, если не понравится, то буду искать другой выход :)
Название: Re: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 11:32 использовал вариант с
Код: setInputMask("000.000.000.000;_"); Название: Re: Нестандартный QLineEdit Отправлено: alexman от Сентября 21, 2011, 11:34 Еще валидатор воткни, чтобы только корректные значения вводились.
Название: Re: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 11:39 спасибо, воткну, без него никуда:)
Название: Re: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 12:12 добавил валидатор и теперь не хочет работать
Код: m_leIP->setValidator(new QIntValidator(0, 255, m_leIP); Название: Re: Нестандартный QLineEdit Отправлено: Пантер от Сентября 21, 2011, 12:13 Какой же это QIntValidator?
Название: Re: Нестандартный QLineEdit Отправлено: alexman от Сентября 21, 2011, 14:09 Тут надо QRegExpValidator на всю строку устанавливать (учитывать точки, первый символ [0-2], ...).
Название: Re: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 14:25 спасибо, до этого никогда с ними не работал. Попробую написать регулярное выражение...
Название: Re: Нестандартный QLineEdit Отправлено: alexman от Сентября 21, 2011, 14:44 Вот и повод появился разобраться :)
Название: Re: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 14:58 Код: m_leStrIP->setInputMask("000.000.000.000;0"); Вот что получилось, но при этом новая проблема возникла: Код: m_leStrIP->text(); Название: Re: Нестандартный QLineEdit Отправлено: alexman от Сентября 21, 2011, 15:25 Попробуй этот вариант:
Код: "( |[0-9] | [0-9] | [0-9]|[0-9][0-9] | [0-9][0-9]|[0-1][0-9][0-9]|2[0-4][0-9]|25[0-5])." Название: Re: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 15:53 тоже самое, нули отсекаются....
Название: Re: Нестандартный QLineEdit Отправлено: alexman от Сентября 21, 2011, 16:07 Попробуй m_leStrIP->setInputMask("000.000.000.000;");
? Название: Re: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 16:11 так работает:)...тогда еще вопрос, как в QLineEdit сделать размер окна по размеру текста?
Название: Re: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 16:33 Туплю что-то, по последнему пункту уже сделал...спасибо большое всем откликнувшимся:)
Название: Re: Нестандартный QLineEdit Отправлено: andrew.k от Сентября 21, 2011, 16:51 Код: m_leStrIP->setInputMask("000.000.000.000;0"); Вот что получилось, но при этом новая проблема возникла: Код: m_leStrIP->text(); У меня маска одновременно с валидатором не работает. Как только добавляю маску валидатор перестает работать. и я могу вводить 999.999.999.999 например. А мой валидатор позволяет только 255.255.255.255. Хотя в ассистенте написано, что должны работать одновременно. Почему так? Название: Re: Нестандартный QLineEdit Отправлено: alexman от Сентября 21, 2011, 17:36 Ну у Larry же работает!
Название: Re: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 17:41 у меня работает, только если задать маску вида 000.000.000.000; в остальных случаях нет:)
Название: Re: Нестандартный QLineEdit Отправлено: andrew.k от Сентября 21, 2011, 17:45 у меня работает, только если задать маску вида 000.000.000.000; в остальных случаях нет:) какой ты регэксп использовал в итоге?Дай целиком кусок кода. Название: Re: Нестандартный QLineEdit Отправлено: Larry от Сентября 21, 2011, 17:54 у меня работает, только если задать маску вида 000.000.000.000; в остальных случаях нет:) какой ты регэксп использовал в итоге?Дай целиком кусок кода. Код: QRegExp rx( "( |[0-9] | [0-9] | [0-9]|[0-9][0-9] | [0-9][0-9]|[0-1][0-9][0-9]|2[0-4][0-9]|25[0-5])." Название: Re: Нестандартный QLineEdit Отправлено: kambala от Сентября 21, 2011, 18:34 точку надо через \\.
а вообще страшновато выглядит :) можно хотя бы одинаковую часть вынести в отдельную переменную. Название: Re: Нестандартный QLineEdit Отправлено: FalconHAM от Сентября 22, 2011, 09:07 А если так?
Код: QRegExp re("([0-2]?[0-5]?[0-5]\\.){3}[0-2]?[0-5]?[0-5]"); Название: Re: Нестандартный QLineEdit Отправлено: andrew.k от Сентября 22, 2011, 09:36 у меня работает, только если задать маску вида 000.000.000.000; в остальных случаях нет:) какой ты регэксп использовал в итоге?Дай целиком кусок кода. Код: QRegExp rx( "( |[0-9] | [0-9] | [0-9]|[0-9][0-9] | [0-9][0-9]|[0-1][0-9][0-9]|2[0-4][0-9]|25[0-5])." Жестокий регэксп) Ну так, а где установка маски? Я то говорил об одновременном использовании маски и валидатора. Название: Re: Нестандартный QLineEdit Отправлено: alexman от Сентября 22, 2011, 09:41 у меня работает, только если задать маску вида 000.000.000.000; в остальных случаях нет:) какой ты регэксп использовал в итоге?Дай целиком кусок кода. Код: QRegExp rx( "( |[0-9] | [0-9] | [0-9]|[0-9][0-9] | [0-9][0-9]|[0-1][0-9][0-9]|2[0-4][0-9]|25[0-5])." Жестокий регэксп) Ну так, а где установка маски? Я то говорил об одновременном использовании маски и валидатора. Кстати ничего жесткого нет: Ctrl+C, далее Ctrl+V 3 раза :) Название: Re: Нестандартный QLineEdit Отправлено: Пантер от Сентября 22, 2011, 09:43 Еще раз кину ссылку http://www.pcre.ru/eval/ (http://www.pcre.ru/eval/). Там можно тестить регекспы.
Название: Re: Нестандартный QLineEdit Отправлено: kambala от Сентября 22, 2011, 11:36 http://www.regular-expressions.info/regexbuddy/ipaccurate.html вот ещё кстати
Название: Re: Нестандартный QLineEdit Отправлено: andrew.k от Сентября 22, 2011, 13:38 Ну так, а где установка маски? Я то говорил об одновременном использовании маски и валидатора. Я этого куска не вижу. Кстати ничего жесткого нет: Ctrl+C, далее Ctrl+V 3 раза :) Ну да, ну да. Нормально.Можно было еще так: 001.001.001.001|001.001.001.002|001.001.001.003|... "Один, один, один, один... Алло, Лоис?... Черт. Один, один, один, два... Алло, Лоис?... Черт". Стьюи Гриффин Название: Re: Нестандартный QLineEdit Отправлено: alexman от Сентября 22, 2011, 13:48 Ну так, а где установка маски? Я то говорил об одновременном использовании маски и валидатора. Я этого куска не вижу. Кстати ничего жесткого нет: Ctrl+C, далее Ctrl+V 3 раза :) Ну да, ну да. Нормально.Можно было еще так: 001.001.001.001|001.001.001.002|001.001.001.003|... "Один, один, один, один... Алло, Лоис?... Черт. Один, один, один, два... Алло, Лоис?... Черт". Стьюи Гриффин andrew.k, до**ся не до чего? Написал же: Цитировать Регэксп написан в спешке Вот установка маски: Цитировать Код: m_leStrIP->setInputMask("000.000.000.000;"); Название: Re: Нестандартный QLineEdit Отправлено: andrew.k от Сентября 22, 2011, 13:57 Ну так, а где установка маски? Я то говорил об одновременном использовании маски и валидатора. Я этого куска не вижу. Кстати ничего жесткого нет: Ctrl+C, далее Ctrl+V 3 раза :) Ну да, ну да. Нормально.Можно было еще так: 001.001.001.001|001.001.001.002|001.001.001.003|... "Один, один, один, один... Алло, Лоис?... Черт. Один, один, один, два... Алло, Лоис?... Черт". Стьюи Гриффин andrew.k, до**ся не до чего? Написал же: Цитировать Регэксп написан в спешке Вот установка маски: Цитировать Код: m_leStrIP->setInputMask("000.000.000.000;"); В инете стопятсот сайтов с регэкспами. найти красивый регэксп для айпи-адреса не составляет труда. Поэтому оправдания тут не уместны. И что у тебя фильтруется ввод значений типа 399.555? Сейчас возьму конкретно твой пример, пойду проверять. У меня одновременно не работает. Может дело в регэкспе?) Название: Re: Нестандартный QLineEdit Отправлено: andrew.k от Сентября 22, 2011, 14:17 Кстати у тебя:
m_leStrIP->setInputMask("000.000.000.000;"); m_leStrInIP->setValidator(validator); Объекты разные или опечатка? Я не докапываюсь, я хочу понять, почему у меня не работает, а у тебя вроде как работает. Название: Re: Нестандартный QLineEdit Отправлено: alexman от Сентября 22, 2011, 15:49 Кстати у тебя: Не у меня, а у Larry. Человек спросил, я подкинул идею... а ты со своим флудом время тратишь. Зачем???m_leStrIP->setInputMask("000.000.000.000;"); m_leStrInIP->setValidator(validator); Объекты разные или опечатка? Я не докапываюсь, я хочу понять, почему у меня не работает, а у тебя вроде как работает. Название: Re: Нестандартный QLineEdit Отправлено: alexman от Сентября 22, 2011, 16:23 Цитировать В инете стопятсот сайтов с регэкспами. Кстати, что делать будешь, если в интернете не найдешь (не в данном конкретном случае, а вообще)?Название: Re: Нестандартный QLineEdit Отправлено: andrew.k от Сентября 26, 2011, 11:47 Цитировать В инете стопятсот сайтов с регэкспами. Кстати, что делать будешь, если в интернете не найдешь (не в данном конкретном случае, а вообще)?ты че такой трудный? Прочитай пять раз тему. Я написал, что у меня не работает и хочу выяснить почему. Название: Re: Нестандартный QLineEdit Отправлено: alexman от Сентября 26, 2011, 13:47 Короче друг друга не поняли. Тема закрыта. совет: если такой умный, то выложил бы "крутой" регэксп.
Название: Re: Нестандартный QLineEdit Отправлено: andrew.k от Сентября 26, 2011, 14:26 Короче друг друга не поняли. Тема закрыта. совет: если такой умный, то выложил бы "крутой" регэксп. крутой регксп (http://regexlib.com/REDetails.aspx?regexp_id=547) |