QWebView: 是否可以高亮词语并进行键盘导航?
我正在使用PyQT4中的QWebView。我想要做以下几件事:
- 在网页中高亮显示一些词汇。
- 在网页内部进行键盘导航(比如按Ctrl-N可以跳到下一个链接)。
这可能实现吗?
2 个回答
3
看看这个 Qwebview 的 findText() 方法。
bool QWebView::findText ( const QString & subString,QWebPage::FindFlags options = 0 )
这个方法可以在网页中找到你指定的字符串或子字符串,并且可以使用一些选项来调整查找的方式。
如果你选择了 HighlightAllOccurrences 这个选项,函数会把网页中所有找到的相同内容都标记出来。之后再调用这个方法时,它会在之前的标记基础上继续添加新的标记,而不是替换掉原来的标记。
2
这不是一件简单的事,但可以做到。你可以使用你的
QWebView
实例的 toHtml 方法,把网页内容转成 HTML,然后用 BeautifulSoup 来解析它(记得用 3.0.9 版本!),在你想要高亮的词语周围插入一个<span class="myhilite">...</span>
标签(同时定义一下 CSS,告诉它myhilite
类要有什么样的视觉效果),最后再用setHtml
方法把修改后的 HTML 放回去——呼,真不容易;-)。我想你可以通过使用
QWebView
从 QWidget 继承来的相关功能来实现(我觉得QWebView
自己并没有增加什么特别的功能),比如如果你想捕捉所有的键盘事件,可以用 grabKeyboard,或者用 addAction 加上一个合适的 快捷键——不过我不太确定当你按下控制键加 N 时想要发生什么,所以这个就有点不确定了。也许你可以更详细地说明一下关于QWebView
、QWidget
等的各种可能的方法?