1

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

正如您可以想象的那样,这在打字时会出现问题,尤其是在另一页而不是要聚焦的页面上,它还会使用于剪切和复制的键盘快捷键根本不起作用。

有没有办法在QGraphicsTextItem不重置光标/移动光标的情况下设置 a 的文本?

4

1 回答 1

3

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

你可以调用textCursor()你的QGraphicsTextItem来获取QTextCursor你的QGraphicsTextItem. 使用此光标,您可以通过调用来获得它的位置position()。然后保持这个值,更新文本,然后通过创建一个新的来设置光标的QTextCursor位置,用 设置他的位置setPosition(int pos, MoveMode m = MoveAnchor)

我希望这有帮助。

编辑添加示例:

// graphicsTextItem is of type QGraphicsTextItem*

QTextCursor cursor = graphicsTextItem->textCursor;
int startPosition = cursor.position();

// Do all you need to update your text.

QTextCursor afterCursor;
afterCursor.setPosition(startPosition);

graphicsTextItem->setTextCursor(afterCursor);

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

于 2010-09-24T18:55:17.923 回答