Обновление QGraphicsTextItem при изменении текста
Я работал с QGraphicsTextItem
, В настоящее время я выложил сцену, каждая из которых изображает физическую страницу текста. Прямо сейчас я переопределяю keyReleaseEvent
функция для перераспределения текста, набранного на всех страницах. Проблема в том, что когда я устанавливаю текст с setPlainText
курсор перемещается назад к началу textitem
это установлено как элемент фокуса для сцены.
Как вы можете себе представить, это проблематично при наборе текста, особенно на другой странице, а не на той, которая настроена на фокусировку, из-за чего сочетания клавиш для вырезания и копирования вообще не работают.
Есть ли способ установить текст QGraphicsTextItem
без этого сбросить курсор / переместить курсор?
1 ответ
Что касается вашей проблемы, я вижу, что вы могли бы ее исправить, но я не уверен, что она лучшая. Вот:
Ты можешь позвонить 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);
Я не проверял это, я написал так, как я думал, что это сработает.