在QTextEdit对象中更改文本外观的最快方法

时间:2013-08-18 15:17:24

标签: python qt pyqt4

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

我需要速度:

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

任何帮助将不胜感激!

更多细节:

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

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

(2)将我的文本编写为HTML文本并使用CSS,因为QTextEditor可以使用它们。唉,easy way不起作用。但也许有可能“重新加载”文本的CSS并使用更聪明的技巧?

1 个答案:

答案 0 :(得分:0)

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

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