在文本更改时更新QGraphicsTextItem

时间:2010-09-24 18:32:45

标签: qt qtruby qgraphicstextitem

我一直在与QGraphicsTextItem合作。我目前在一个场景中布局,每个场景都描绘了一个文本的物理页面。现在,我正在覆盖keyReleaseEvent函数,以重新分配在所有页面中键入的文本。这个问题是当我用setPlainText设置文本时,光标会移回到textitem的开头,该QGraphicsTextItem被设置为场景的焦点项。

正如您可以想象的那样,这在输入时会出现问题,尤其是在另一个页面而不是一个焦点上,这也使得用于剪切和复制的键盘快捷方式根本不起作用。

有没有办法设置{{1}}的文本而不重置光标/移动光标?

1 个答案:

答案 0 :(得分:3)

对于你的问题,有一种方法我认为你可以解决它,但我不确定它是最好的。这是:

您可以在textCursor()上致电QGraphicsTextItem以获取QTextCursor的{​​{1}}。使用此光标,您可以通过调用QGraphicsTextItem来获得其位置。然后保留此值,更新文本,然后通过创建新的position()来设置光标的位置,并使用QTextCursor设置其位置。

我希望这会有所帮助。

编辑添加示例:

setPosition(int pos, MoveMode m = MoveAnchor)

我没有对此进行测试,我按照我认为的方式编写了它。