1

对于 Python3/PyQt4 项目,我正在寻找最快的方法来更改 QTextEdit 对象中几个单词的文本外观。文本不是用 HTML 编写的(它是纯文本字符串),是只读的并且由多个单词组成。每个单词都有一个在我的代码中定义的特殊“属性”,当这个单词悬停在上面时定义它的外观。 当鼠标悬停在其中一个词上时,共享相同属性的所有词的外观必须改变。

我需要速度,因为:

  • 我做了或多或少相同的程序,但是当用户单击它们时单词的外观发生了变化,我猜我的代码太慢而无法用于悬停事件。(详见下文)
  • 这是一个基于 PyQt4 的 Python 项目,而不是基于 Qt 的 C++ 项目。

任何帮助,将不胜感激 !

更多细节 :

我可以看到两种方法来实现我的目标:

(1) 在编辑器中编写我的文本,检测鼠标“飞过”哪个词,让其他词突出显示并痛苦地选择它们,一个一个,插入一些 HTML 代码来修改它们的外观。这是我觉得太复杂和太慢的痛苦部分:有没有最快的方法来做到这一点?

(2) 将我的文本编写为 HTML 文本并使用 CSS,因为 QTextEditor 可以使用它们。唉,简单的方法行不通。但也许可以“重新加载”文本的 CSS 并使用更聪明的技巧?

4

1 回答 1

0

我想知道是否甚至可以从 QTextEdit 中获取鼠标光标下的单词。

你说文本不能被编辑,所以我可能 QTextEdit 不是这项工作的最佳小部件。创建自己的小部件并自己绘制文本。然后你知道单词的位置,所以在鼠标下找到单词很容易。并且当某些属性被激活或停用时,您可以只重绘受影响的单词。

于 2013-08-18T16:52:58.760 回答