Qt检查有效URL

3
我正在尝试创建一个Qt应用程序,检查用户在文本编辑器中输入的URL是否有效。 以下是我目前的代码,但它总是说输入的URL是有效的,即使我输入了无效的URL。
bool checkUrl(const QUrl &url) {
    if (!url.isValid()) {
        //qDebug(QString("Invalid URL: %1").arg(url.toString()));
        return false;
    }
    return true;
}

void MainWindow::on_pushButton_clicked()
{
    QString usertext = ui->plainTextEdit->toPlainText();
    QUrl url = QUrl::fromUserInput(usertext);
    if (checkUrl(url))
        ui->textEdit->setPlainText("Valid URL.");
    else
        ui->textEdit->setPlainText("Invalid URL.");
}

此外,在qDebug行中还存在错误:

/home/user/HTML/mainwindow.cpp:32: error: no matching function for call to ‘qDebug(QString)’

有人知道这个问题是什么吗?它一直返回true。

2个回答

3
您应该像这样使用qDebug
qDebug() << QString("Invalid URL: %1").arg(url.toString());

还要注意,QUrl::isValid()并不检查url的语法。你可能需要使用正则表达式来验证urls。

1

QUrl::isValid() 基本上只检查字符编码是否正确。你认为什么样的URL是错误的?

关于 qDebug,你使用的形式基本上封装了 printf,因此无法使用 QString。你需要进行以下操作:

qDebug() << QString("Invalid URL: %1").arg(url.toString());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接