Как запретить пользователю вводить в QLineEdit что-либо кроме URL?
Ситуация: нужна форма (необязательно QLineEdit, но я не нашёл специальной формы для ссылок), которая не даст пользователю ввести что-либо кроме ссылок. Видел формы, которые разрешают только ввод чисел, а не букв. Нужно что-то типа такого, только для ссылок. При этом при проверке не обязательно подключение к интернету. Знаю про класс QUrl, но его метод isValid() пропускает и нерабочие URL почему-то.
Проверка по ходу ввода делается с помощью подклассов 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));
* Не забывая удвоить обратные слеши, дабы компилятор С++ сам не пытался их интерпретировать.
Продвижение своими сайтами как стратегия роста и независимости