Как запретить пользователю вводить в QLineEdit что-либо кроме URL?

126
28 ноября 2019, 11:50

Как запретить пользователю вводить в QLineEdit что-либо кроме URL?

Ситуация: нужна форма (необязательно QLineEdit, но я не нашёл специальной формы для ссылок), которая не даст пользователю ввести что-либо кроме ссылок. Видел формы, которые разрешают только ввод чисел, а не букв. Нужно что-то типа такого, только для ссылок. При этом при проверке не обязательно подключение к интернету. Знаю про класс QUrl, но его метод isValid() пропускает и нерабочие URL почему-то.

Answer 1

Проверка по ходу ввода делается с помощью подклассов QValidator, можно сделать свой на основе QUrl, а можно просто взять QRegExpValidator из коробки и регулярку из гугла с en-so*:

QLineEdit *leUrl= new QLineEdit(this);
QRegExp urlRx{"https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{2,256}\\.[a-z]{2,6}\\b([-a-zA-Z0-9@:%_\\+.~#?&//=]*)"};
leUrl->setValidator(QRegExpValidator(urlRx));

* Не забывая удвоить обратные слеши, дабы компилятор С++ сам не пытался их интерпретировать.

READ ALSO
Обход сцен графа

Обход сцен графа

Здравствуйте у меня есть SceneGraph состоящий из Node:

113
Скажите плиз как реализовать [закрыт]

Скажите плиз как реализовать [закрыт]

Нужно найти разницу между суммой всех цифр использованных для записи всех нечетных чисел от 1 до х и суммой всех цифр использованных для записи...

125
QT не может найти lineEdit

QT не может найти lineEdit

QT не может найти lineEditЯ пытаюсь забрать текст из lineEdit так: ui->lineEdit->text() Причём он не видит и не выводит lineEdit и даже когда я пытался вставить...

93