如何用QT写简单浏览器(非针对现有HTML)

45 views
Skip to first unread message

ocean

unread,
Jul 25, 2010, 10:29:46 PM7/25/10
to qt-c...@googlegroups.com
我跟朋友想开发一种新的网络编程语言(只是练手,还没想将语言完善并推广),需要自己动手写一个小型浏览器,我们想在Linux下用PyQt写。查阅了一下,虽然有QtWebKit ,但是貌似只是针对现有的语言(比如HTML)的,没法提供我们想要的效果。
我们的想法是这样的:把网页元素(比如一段段文字、图片等)分割成一小块一小块,每一小块是一个控件(比如用Text Edit来显示一段文本),放在一个Main Window上,然后对控件进行布局来实现网页元素的布局。
现在的问题是:
1.如果控件太多超过了Main Window的显示范围,如何让Main Window产生滚动条?(就是说浏览器浏览页面时右侧有滚动条的效果)。我试过把控件放在一个Scroll Area里,但是这样只能使里面单独控件超出范围时产生滚动条,而不是整个Main Window产生滚动条。(见附件)
2.将构成网页的一个个控件放在Main Window上分界太明显了,很不美观,可以让控件跟背景(也就是Main Window)协调一下吗?
PS.第一个问题急着解决,第二个问题是次要的,先不管是否美观了,解决第一个问题再说。
请指教,谢谢。
webpage.png

Mike Chen

unread,
Jul 27, 2010, 7:54:42 AM7/27/10
to qt-c...@googlegroups.com
新的网络编程语言?嗯哼。。鼓励但是不看好的。

假如全部使用控件实现对性能的要求相当高的。拖动时也难免有卡的感觉。其实我建议还是自己render。或者将所谓新的非HTML元素转换为html5+css+javascript的形式,毕竟这是趋势,而且我相信Qt用的Webkit肯定可以解析的。


2010/7/26 ocean <opensour...@gmail.com>:

> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“Qt中文”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 qt-c...@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 qt-china+u...@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/qt-china?hl=zh-CN 访问此网上论坛。
>

张荣锋

unread,
Jul 27, 2010, 7:56:06 AM7/27/10
to qt-c...@googlegroups.com
是啊,“新的网络编程语言”这个范畴大了哦。

2010/7/27 Mike Chen <ccp...@gmail.com>
新的网络编程语言?嗯哼。。鼓励但是不看好的。

假如全部使用控件实现对性能的要求相当高的。拖动时也难免有卡的感觉。其实我建议还是自己render。或者将所谓新的非HTML元素转换为html5+css+javascript的形式,毕竟这是趋势,而且我相信Qt用的Webkit肯定可以解析的。


2010/7/26 ocean <opensource.org.cn@gmail.com>:
> 我跟朋友想开发一种新的网络编程语言(只是练手,还没想将语言完善并推广),需要自己动手写一个小型浏览器,我们想在Linux下用PyQt写。查阅了一下,虽然有QtWebKit
> ,但是貌似只是针对现有的语言(比如HTML)的,没法提供我们想要的效果。
> 我们的想法是这样的:把网页元素(比如一段段文字、图片等)分割成一小块一小块,每一小块是一个控件(比如用Text
> Edit来显示一段文本),放在一个Main Window上,然后对控件进行布局来实现网页元素的布局。
> 现在的问题是:
> 1.如果控件太多超过了Main Window的显示范围,如何让Main
> Window产生滚动条?(就是说浏览器浏览页面时右侧有滚动条的效果)。我试过把控件放在一个Scroll
> Area里,但是这样只能使里面单独控件超出范围时产生滚动条,而不是整个Main Window产生滚动条。(见附件)
> 2.将构成网页的一个个控件放在Main Window上分界太明显了,很不美观,可以让控件跟背景(也就是Main Window)协调一下吗?
> PS.第一个问题急着解决,第二个问题是次要的,先不管是否美观了,解决第一个问题再说。
> 请指教,谢谢。
>
> --
> 您收到此邮件是因为您订阅了 Google 网上论坛的“Qt中文”论坛。
> 要向此网上论坛发帖,请发送电子邮件至 qt-c...@googlegroups.com
> 要取消订阅此网上论坛,请发送电子邮件至 qt-china+u...@googlegroups.com
> 若有更多问题,请通过 http://groups.google.com/group/qt-china?hl=zh-CN 访问此网上论坛。
>

--
您收到此邮件是因为您订阅了 Google 网上论坛的“Qt中文”论坛。
要向此网上论坛发帖,请发送电子邮件至 qt-c...@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 qt-china+u...@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/qt-china?hl=zh-CN 访问此网上论坛。




--
Thanks and Best regards!

from ZhangRongfeng
来自 张荣锋
Skype:  zhangrongfeng003
FAX:  0519 89885381
Mobile: +86 18915062203
E-mail: zhangron...@gmail.com
Addr: 常州市新北区中华恐龙园

ocean

unread,
Jul 27, 2010, 8:36:51 AM7/27/10
to qt-c...@googlegroups.com
呵呵,都说了只是练手嘛,没想要推广,只是做一个简单的练习。
现在已经解决滚动条的问题了~谢谢你们的回复
webpage2.png

vivian

unread,
Jul 27, 2010, 8:49:33 AM7/27/10
to qt-c...@googlegroups.com
我觉得你参考QtWebKit的源代码,应该能得到很多帮助.,你应该也可以将QtWebKit的源代码做些改造,让它支持你的语言和文档格式.这样应该比从底层写起更有效率吧.

--
您收到此邮件是因为您订阅了 Google 网上论坛的“Qt中文”论坛。
要向此网上论坛发帖,请发送电子邮件至 qt-c...@googlegroups.com
要取消订阅此网上论坛,请发送电子邮件至 qt-china+u...@googlegroups.com
若有更多问题,请通过 http://groups.google.com/group/qt-china?hl=zh-CN 访问此网上论坛。



--
不抛弃 不放弃
www.bilive.com
做优秀的软件

ocean

unread,
Jul 27, 2010, 8:58:47 AM7/27/10
to qt-c...@googlegroups.com
谢谢vivian
读源代码我们也试过,但是觉得它主要是针对现有HTML,跟我们的情况不太一样就放弃了;而且觉得读懂它的代码改造成能支持我们的语言还不如我们从头写一个更锻炼(练手嘛),呵呵~
我们先进行试试看吧,如果不行再考虑修改QtWebKit的问题~
360.gif

Liang Qi

unread,
Jul 27, 2010, 12:03:53 PM7/27/10
to qt-c...@googlegroups.com
2010/7/26 ocean <opensour...@gmail.com>:

> 我跟朋友想开发一种新的网络编程语言(只是练手,还没想将语言完善并推广),需要自己动手写一个小型浏览器,我们想在Linux下用PyQt写。查阅了一下,虽然有QtWebKit
> ,但是貌似只是针对现有的语言(比如HTML)的,没法提供我们想要的效果。
我觉得可能换句话说是不知道怎么改QtWebKit实现你想要的效果吧?

http://labs.trolltech.com/blogs/2010/06/25/qt-for-google-native-client-preview/
http://labs.trolltech.com/blogs/2010/05/17/qtwebkit-now-accelerates-css-animations-3d-transforms/
这样的效果如何?

> 我们的想法是这样的:把网页元素(比如一段段文字、图片等)分割成一小块一小块,每一小块是一个控件(比如用Text
> Edit来显示一段文本),放在一个Main Window上,然后对控件进行布局来实现网页元素的布局。
> 现在的问题是:

QWidget+Layout的方式太古老了,Qt自己都要脱离这种方式了,你还打算用这个渲染网页?
建议你看看QML, QGraphicsView等等

> 1.如果控件太多超过了Main Window的显示范围,如何让Main
> Window产生滚动条?(就是说浏览器浏览页面时右侧有滚动条的效果)。我试过把控件放在一个Scroll
> Area里,但是这样只能使里面单独控件超出范围时产生滚动条,而不是整个Main Window产生滚动条。(见附件)

建议再看看QScrollArea的文档,不是每个控件放一个,是把这个scroll area作为main
window的子widget,你的所有控件可以都放在它上面。

QMainWindow本身就不够轻型,当你有多个网页同时渲染的时候,你考虑一下资源的情况吧。

如果你真的对稍轻型的有兴趣,不妨看看QTextEdit的Rich Text的渲染吧。

> 2.将构成网页的一个个控件放在Main Window上分界太明显了,很不美观,可以让控件跟背景(也就是Main Window)协调一下吗?
> PS.第一个问题急着解决,第二个问题是次要的,先不管是否美观了,解决第一个问题再说。
> 请指教,谢谢。
>

齐亮

--
http://www.qiliang.net

ocean

unread,
Jul 27, 2010, 7:46:17 PM7/27/10
to qt-c...@googlegroups.com
哇,齐亮分析的好仔细啊,先赞一个!
说实话,我们现在的水平有限,不可能开发出那么全面的语言,我说过了,只是为了简单的练习,没想那么深。我们就是想用一些简单的基本的方法来实现自己的想法而已。也许以后水平提高了我们会重新研究这些的,你的这些建议收藏了,呵呵~
另,我们想要想的结果已经实现了,确实是一开始对Scroll Area看得不仔细。

在 2010年7月28日 上午12:03,Liang Qi <cavend...@gmail.com>写道:
Reply all
Reply to author
Forward
0 new messages