关于获取网站favicon的疑问

daiheitan 2010-02-08 10:39:22
我用的是4.6.0,使用QWebView的 iconChanged()信号确定加载网站的FavIcon图标后,将它设置为窗口图标
已经在main.cpp中添加了QWebSettings::setIconDataBasePath("./favIcon");
运行时webPageIcon.db在该目录下被创建,但是网站图标却没有更新

困扰我好几天了……在线求解答

另外质疑QtWebkit对网页上ico元素的解析,直接打开URL:http://www.google.com/favicon.ico
显示一个不可识别的图像组件
跪谢解答者!
...全文
405 20 打赏 收藏 转发到动态 举报
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
daiheitan 2010-02-10
  • 打赏
  • 举报
回复
最后我通过Qhttp获取的
主要的手段是网页加载完成后分析html(通过webframe的documentElement方法)获取rel属性为shortcut icon的节点
读取URL作为QHTTP要获取数据的URL
但是例如搜索引擎的页面,其favIcon是通过domain.com/favcion.ico获取的,所以如果最后得到节点为空,就把要处理的URL设置为页面URL
verycd的图标还是很诡异。
daiheitan 2010-02-10
  • 打赏
  • 举报
回复
不行,赫然发现类似人人网的也得不到……肯定有什么状况,唉……
MicroSky2813 2010-02-09
  • 打赏
  • 举报
回复
网站图标更新应该是widget继承的那个set,你用的set好像不大对,所以更新不了

ico元素的解析,你其他的组件enable了吗/

qt/example/webkit里有相关例子,可以参考下
daiheitan 2010-02-09
  • 打赏
  • 举报
回复
好吧= =
反正现在大部分网站也能成功get到了
verycd还是不行,很奇特。
再等一天我就结贴好了
MicroSky2813 2010-02-09
  • 打赏
  • 举报
回复
引用 16 楼 daiheitan 的回复:
ORZ……
希望后续的版本可以解决这个无聊的bug
我看到bug.webkit.org里有人提交了QtWebkit的这个bug
但是被官方判定为不存在bug
在4.5.3的帮助文档中说,对于favicon的支持在windows下不可用
在4.6.0的帮助文档中就删掉这段话了,但是很明显还是不太好用

(我真的搜了很多文件啊- -泪涌)


你真的很执着,

Qt还在发展,Qt4里看Qt3改动淘汰的那一大堆类,可能在Qt4.7或者以后就好了,一开始Qt对QWebkit的支持也不好,现在还强点
daiheitan 2010-02-09
  • 打赏
  • 举报
回复
ORZ……
希望后续的版本可以解决这个无聊的bug
我看到bug.webkit.org里有人提交了QtWebkit的这个bug
但是被官方判定为不存在bug
在4.5.3的帮助文档中说,对于favicon的支持在windows下不可用
在4.6.0的帮助文档中就删掉这段话了,但是很明显还是不太好用

(我真的搜了很多文件啊- -泪涌)
MicroSky2813 2010-02-09
  • 打赏
  • 举报
回复
引用 14 楼 daiheitan 的回复:
如果URL就指向一个ico文件,那么怎么在QWebPage中当作一个QPixmap显示?
这些破问题纠结我好多天了
话说plugins/imageformats目录下也有ico解析的组件,在webpage中无法显示的ico也被识别为“image”,但是就是不显示
可以编译exmaple中的fancy browser然后打开一个网站的favicon的URL试试看,在那个加载失败的icon图像上右键,可以看到QtWibkit可以识别他是image,但是就是不显示

偷偷保存下来,二进制保存在db里或者找个文件夹保存
daiheitan 2010-02-09
  • 打赏
  • 举报
回复
如果URL就指向一个ico文件,那么怎么在QWebPage中当作一个QPixmap显示?
这些破问题纠结我好多天了
话说plugins/imageformats目录下也有ico解析的组件,在webpage中无法显示的ico也被识别为“image”,但是就是不显示
可以编译exmaple中的fancy browser然后打开一个网站的favicon的URL试试看,在那个加载失败的icon图像上右键,可以看到QtWibkit可以识别他是image,但是就是不显示
MicroSky2813 2010-02-09
  • 打赏
  • 举报
回复
引用 12 楼 daiheitan 的回复:
但是从那个DB文件中也没成功读出来过
三问:QWebPage显示ico元素到底需要什么组件?= =||

貌似可能没有相关组件,呵呵,当一般QPixmap用吧
daiheitan 2010-02-09
  • 打赏
  • 举报
回复
但是从那个DB文件中也没成功读出来过
三问:QWebPage显示ico元素到底需要什么组件?= =||
MicroSky2813 2010-02-09
  • 打赏
  • 举报
回复
引用 10 楼 daiheitan 的回复:
但要是这样的话,iconDatabase还有什么意义
QWebSettings弄这个是不是也太虚幻了。

像书签(收藏夹)之类的网址图标,或者历史记录可能能用到
daiheitan 2010-02-09
  • 打赏
  • 举报
回复
但要是这样的话,iconDatabase还有什么意义
QWebSettings弄这个是不是也太虚幻了。
MicroSky2813 2010-02-09
  • 打赏
  • 举报
回复
引用 8 楼 daiheitan 的回复:
在firefox中打开www.verycd.com/favicon.ico可以显示徽标
在QtWebKit的中还是一个问号
而Qhttp.get也不能得到icon,大困惑

那网站favicon确实慢点,但不会get不到的吧
daiheitan 2010-02-09
  • 打赏
  • 举报
回复
在firefox中打开www.verycd.com/favicon.ico可以显示徽标
在QtWebKit的中还是一个问号
而Qhttp.get也不能得到icon,大困惑
daiheitan 2010-02-09
  • 打赏
  • 举报
回复
恩实际上topic.csdn.net能够成功获取
获取URL后用url.host()获取主域名就行了。
但是很奇特www.verycd.com却得不到icon
另外还是好奇在webview中显示ico元素到底要打开什么组件?
MicroSky2813 2010-02-09
  • 打赏
  • 举报
回复
http://topic.csdn.net/favicon.ico

对url做下处理
MicroSky2813 2010-02-09
  • 打赏
  • 举报
回复
引用 4 楼 daiheitan 的回复:
我迫于无奈使用了http的get方法来获取favicon,但是因为只有网站的顶级域名的/favicon.ico可以明确访问网站图标,那么例如http://topic.csdn.net/u/20100208/这样的URL要怎么获取其favicon?


我也觉得应该http的get可以,但我查了几个有favicon的网站,从源文件没找到取icon的地方,那就应该在http的头上了,大多都是"/favicon.ico",不是的话就转网站门户网页里找
daiheitan 2010-02-09
  • 打赏
  • 举报
回复
我迫于无奈使用了http的get方法来获取favicon,但是因为只有网站的顶级域名的/favicon.ico可以明确访问网站图标,那么例如http://topic.csdn.net/u/20100208/这样的URL要怎么获取其favicon?
daiheitan 2010-02-09
  • 打赏
  • 举报
回复
另外用同样基于QtWibkit的已经发布的浏览器Arara打开www.google.com/favicon.ico也并不能正确显示
daiheitan 2010-02-09
  • 打赏
  • 举报
回复
ico元素解析需要什么组件?
webKit的四个例子并无获得favicon的部分吧,我看过几次。

16,211

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧