我正在尝试创建一个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)’
有没有人知道问题是什么,因为它一直都是真的?
答案 0 :(得分:3)
你应该像这样使用qDebug
:
qDebug() << QString("Invalid URL: %1").arg(url.toString());
另请注意,QUrl::isValid()
不检查网址的语法。您可能希望使用正则表达式来验证网址。
答案 1 :(得分:1)
QUrl::isValid()
基本上只检查字符编码是否正确。你在考虑错误的网址是什么?
重新qDebug
,您使用的表单基本上封装了printf
,因此它不适用于QString
。你想做的事:
qDebug() << QString("Invalid URL: %1").arg(url.toString());