2012-03-12 371 views
1

我想创建一个Qt应用程序,检查用户输入的文本编辑URL是否有效。Qt检查有效的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?

回答

3

你应该使用qDebug这样的:

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

也注意到,QUrl::isValid()不检查URL的语法。您可能想要使用正则表达式来验证网址。

1

QUrl::isValid()只基本检查字符编码是否正确。你在考虑一个错误的网址?

Re qDebug,您使用的表格基本上封装了printf,所以它不适用于QString。你想做的事:

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