QWebView: 是否可以高亮词语并进行键盘导航?

2 投票
2 回答
868 浏览
提问于 2025-04-15 23:21

我正在使用PyQT4中的QWebView。我想要做以下几件事:

  1. 在网页中高亮显示一些词汇。
  2. 在网页内部进行键盘导航(比如按Ctrl-N可以跳到下一个链接)。

这可能实现吗?

2 个回答

3

看看这个 Qwebview 的 findText() 方法

 bool QWebView::findText ( const QString & subString,QWebPage::FindFlags  options = 0 )

这个方法可以在网页中找到你指定的字符串或子字符串,并且可以使用一些选项来调整查找的方式。

如果你选择了 HighlightAllOccurrences 这个选项,函数会把网页中所有找到的相同内容都标记出来。之后再调用这个方法时,它会在之前的标记基础上继续添加新的标记,而不是替换掉原来的标记。

2
  1. 这不是一件简单的事,但可以做到。你可以使用你的 QWebView 实例的 toHtml 方法,把网页内容转成 HTML,然后用 BeautifulSoup 来解析它(记得用 3.0.9 版本!),在你想要高亮的词语周围插入一个 <span class="myhilite">...</span> 标签(同时定义一下 CSS,告诉它 myhilite 类要有什么样的视觉效果),最后再用 setHtml 方法把修改后的 HTML 放回去——呼,真不容易;-)。

  2. 我想你可以通过使用 QWebViewQWidget 继承来的相关功能来实现(我觉得 QWebView 自己并没有增加什么特别的功能),比如如果你想捕捉所有的键盘事件,可以用 grabKeyboard,或者用 addAction 加上一个合适的 快捷键——不过我不太确定当你按下控制键加 N 时想要发生什么,所以这个就有点不确定了。也许你可以更详细地说明一下关于 QWebViewQWidget 等的各种可能的方法?

撰写回答