QT 4.8.0 QURL的Bug??

在升级到Qt4.8.0后,发现使用QUrl加载本地页面时出现异常,只能访问服务器页面。通过调试发现QUrl的toLocalFile()返回空字符串,原因是缺少对scheme的设置。解决方法是调用QUrl的setScheme("file"),将scheme设置为"file"。在Qt4.7.4中,对于空scheme已有处理,但4.8.0中移除了这一判断。最后,选择不打补丁,直接在代码中添加setScheme操作修复了问题。
摘要由CSDN通过智能技术生成
 

 最近, Qt4.8.0终于正式release了,由于想用它带的QtWebkit 2.2.0,就下载了一个。

解包, 写编译脚本, 设置环境变量,在arm平台交叉编译成功生成了熟悉的几个Qt库以及plugins以后。

编以前的qtwebkit应用: 自己写的一个简单浏览器。

编译成功后, 发现跑起来以后,访问不了本地页面, 只能访问服务器页面,

我访问本地页面用的是如下语句: webView->load(QUrl("foo.html"));

这个foo.html跟可执行文件放在同目录下,以前在qt4.7.4版本下是可以正常访问的。

 

这肯定是版本升级带来的问题,怎么办? 查代码啊,有源码,咱不怕。

结果跟啊跟啊, 问题定位到QUrl里去了,

主要是这条语句:

QUrl baseUrl = QUrl::fromLocalFile(QFileInfo(url.toLocalFile()).absoluteFilePath());

baseUrl的值是/mnt/qtbrowser而不是/mnt/qtbrowser/foo.html, 把foo.html给丢了。

 

在看QUrl的方法toLocalFile()竟然返回了一个空字符串, 而不是foo.html,怪不得baseUrl没有foo.html了。

罪魁祸首还是在这个判断中:

if (d->scheme.compare(QLatin1String("file"), Qt::CaseInsensitive) != 0)

    return false;

由于d->sc

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值