Qt5 - Как заставить qurl определить, является ли данный URL-адрес локальным или нет, и добавить http://, если нет?

Класс QUrl можно использовать для открытия как локального, так и онлайн-файла. Я использовал QLineEdit, чтобы взять URL как QString и передать его QUrl. Программа может получить доступ как к локальному, так и к онлайн-файлу. Мой главный вопрос: есть ли какой-либо официальный способ автоматически определить, является ли данный URL-адрес локальным или онлайн, и автоматически добавить http://, если URL-адрес находится в сети?

Например, если тип пользователя www.google.com, он должен быть подключен к сети и должен быть добавлен http:// перед обработкой. Если пользователь вводит /home/username/somepath, он должен быть в автономном режиме.

Конечно, для этой цели можно использовать небольшую штуку if и else с проверкой строкового шаблона. Мой вопрос в том, есть ли официально поддерживаемый способ сделать что-то подобное из Qt5.


person Mas Bagol    schedule 22.05.2015    source источник


Ответы (1)


Для этой цели вы можете использовать QUrl:fromUserInput(...).

QString first("qt-project.org");
QString second("ftp.qt-project.org");
QString third("hostname");
QString fourth("/home/user/test.html");

qDebug() << QUrl::fromUserInput(first);   // QUrl( "http://qt-project.org" )       
qDebug() << QUrl::fromUserInput(second);  // QUrl( "ftp://ftp.qt-project.org" )    
qDebug() << QUrl::fromUserInput(third);   // QUrl( "http://hostname" )             
qDebug() << QUrl::fromUserInput(fourth);  // QUrl( "file:///home/user/test.html" ) 
person Dávid Kaya    schedule 22.05.2015