【问题标题】: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);
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-09-30
      • 2011-03-23
      • 1970-01-01
      • 2017-09-24
      • 2022-12-15
      • 2015-11-11
      • 2017-01-09
      • 1970-01-01
      相关资源
      最近更新 更多