判断Url是否合法有效,并做响应处理(Qt--QWebEngine)

参考资料:
url regular expression:https://stackoverflow.com/search?q=url+regular+expression
Qt regular expression:https://www.cnblogs.com/hellovenus/p/4984751.html
Describes search engine parameters:https://blog.csdn.net/jackpk/article/details/5629710?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distribute.pc_relevant.none-task
// 判断是否合法有效,合法直接载入,不合法则根据当前设置的搜索引擎,做拼接处理,再行载入
void slotUrlLineEditReturnPressed()
{
    QString text = m_urlLineEdit->text();  //locationbar input data
    int pos = 0;

    QRegExp rx;
    //url regular expression
    rx.setPattern("(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]");  
    QRegExpValidator rv;
    rv.setRegExp(rx);
    //Test for a match between the url and the regular expression
    QValidator::State rvState = rv.validate(text, pos);
    if (rvState == QValidator::Acceptable) {
        //fromUserInput()  ==  setUrl()
        m_engineView->setUrl(QUrl::fromUserInput(text));
    } else {  // rvState == QValidator::Intermediate || rvState == QValidator::Invalid
        QString targer_url;
        switch (mApp->DSettings()->CurrentSearchEngine()) {
            case 0:  // Baidu
                targer_url =
                    QString("https://www.baidu.com/baidu?tn=monline_3_dg&ie=utf-8&wd=%1").arg(text);
                m_engineView->setUrl(QUrl(targer_url));
                break;
            case 1:  // Google
                targer_url = QString("https://www.google.com/search?q=%1").arg(text);
                m_engineView->setUrl(QUrl(targer_url));
                break;
            case 2:  // Bing
                targer_url =
                    QString("https://www.bing.com/search?form=MOZLBR&pc=MOZI&q=%1").arg(text);
                m_engineView->setUrl(QUrl(targer_url));
                break;
            case 3:  // 360
                targer_url =
                    QString("https://www.so.com/s?ie=utf-8&src=360chrome_toolbar_search&q=%1")
                        .arg(text);
                m_engineView->setUrl(QUrl(targer_url));
                break;
        }
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值