【问题标题】:Updating a QGraphicsTextItem on text change在文本更改时更新 QGraphicsTextItem
【发布时间】:2010-09-24 18:32:44
【问题描述】:
我一直在与QGraphicsTextItem 合作。我目前有一个场景中的布局,每个都描绘了一个物理页面的文本。现在我正在重写 keyReleaseEvent 函数来重新分配在所有页面上键入的文本。这样做的问题是,当我使用setPlainText 设置文本时,光标会移回设置为场景焦点项的textitem 的开头。
您可以想象,这在键入时会出现问题,尤其是在另一页而不是设置为焦点的页面上,它还会使用于剪切和复制的键盘快捷键根本不起作用。
有没有办法在不重置光标/移动光标的情况下设置QGraphicsTextItem 的文本?
【问题讨论】:
标签:
qt
qtruby
qgraphicstextitem
【解决方案1】:
对于您的问题,我认为您可以通过一种方法来解决它,但我不确定它是否是最好的。这里是:
您可以在您的QGraphicsTextItem 上致电textCursor() 以获取您的QGraphicsTextItem 的QTextCursor。使用此光标,您可以通过调用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);
我没有对此进行测试,我按照我认为可行的方式编写了它。