QT 对网址的解析和组合

首先值得一提的是:

QT5 以下和以上是有所不同的。


然后, 为什么要解析和组后网址?


当我们的客户端软件里面嵌入网页时,在与网页交互的过程中, 比如说,单击客户端嵌入的网页上的某个按钮时, 我们客户端需要做处理时, 这时就需要知道网页端,到底想让我们做什么处理。我们需要拿到, 或者能拿到些什么参数来处理。


比如说,我单击网页后,通过绑定 下面的信号与槽(linkClicked(QUrl) 信号, 是qwebview自身的信号)

connect(page, SIGNAL(linkClicked(QUrl)), this, SLOT(slotLinkClicked(QUrl)));

得到返回的url;

asfle://follow?type=follow&start=00:00:01,493 &over= 00:00:11,488&exercise_id=6&media_id=13&examination_id=2

这时,我们就需要来解析这个url,来获取到对应的参数, 进行客户端的处理。


在这个url中,有几个地方需要注意:

前面那个是url中asfle是scheme, 而问号前的“follow”是代表host,  后面是query部分,就是一个参数对应一个值, 就是键和值的关系。

我们可以通过前面scheme和host可以判断是否是你需要的链接, 再通过解析后面的query来获取对应的参数。


如:我们要得到开始时间start后面的00:00:01,493就可以通过,

const QString startTime= url.queryItemValue("start");

// 上面是QT4的获取方法


QUrlQuery q(url);

const QString startTime= q.queryItemValue("start");

//这是QT5的获取方法


然后就是把参数组后成一个链接:

QT4表示为:

QUrl url;
url.setUrl(mainUrl);

//mainUrl是不带后面参数的

url.addQueryItem(tr("start"), tr("00:00:01,493"));

//这是其中一个的表示方法,其它的一样。

如果有用上session则:

addSessionIdQueryItem(&url);


QT5表示为:

QUrl url;
url.setUrl(mainUrl);
QUrlQuery q;
addSessionIdQueryItem(&q);
q.addQueryItem(tr("start"), tr("00:00:01,493"));

.......其它的一样表示
url.setQuery(q);

  


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小K小Q

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值