Класс QTextCursor
Класс QTextCursor предоставляет API для доступа и изменения QTextDocuments. Подробнее...
| Заголовок: | #include <QTextCursor> |
| CMake: | find_package(Qt6 COMPONENTS Gui REQUIRED) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
Примечание: Все функции в этом классе являются повторно-входными.
Открытые типы
| Перечисление | Режим перемещения { ПеремещениеЯкоря, СохранениеЯкоря } |
| Перечисление | Операция перемещения { БезПеремещения, Начало, НачалоСтроки, НачалоБлока, НачалоСлова, …, ПредыдущаяСтрока } |
| Перечисление | Тип выделения { Документ, БлокПодКурсором, СтрокаПодКурсором, СловоПодКурсором } |
Открытые функции
| QTextCursor(const QTextCursor &cursor) | |
| QTextCursor(const QTextBlock &block) | |
| QTextCursor(QTextFrame *frame) | |
| QTextCursor(QTextDocument *document) | |
| QTextCursor() | |
| QTextCursor & | operator=(const QTextCursor &cursor) |
| ~QTextCursor() | |
| int | anchor() const |
| bool | atBlockEnd() const |
| bool | atBlockStart() const |
| bool | atEnd() const |
| bool | atStart() const |
| void | beginEditBlock() |
| QTextBlock | block() const |
| QTextCharFormat | blockCharFormat() const |
| QTextBlockFormat | blockFormat() const |
| int | blockNumber() const |
| QTextCharFormat | charFormat() const |
| void | clearSelection() |
| int | columnNumber() const |
| QTextList * | createList(const QTextListFormat &format) |
| QTextList * | createList(QTextListFormat::Style style) |
| QTextFrame * | currentFrame() const |
| QTextList * | currentList() const |
| QTextTable * | currentTable() const |
| void | deleteChar() |
| void | deletePreviousChar() |
| QTextDocument * | document() const |
| void | endEditBlock() |
| bool | hasComplexSelection() const |
| bool | hasSelection() const |
| void | insertBlock() |
| void | insertBlock(const QTextBlockFormat &format) |
| void | insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat) |
| void | insertFragment(const QTextDocumentFragment &fragment) |
| QTextFrame * | insertFrame(const QTextFrameFormat &format) |
| void | insertHtml(const QString &html) |
| void | insertImage(const QTextImageFormat &format) |
| void | insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment) |
| void | insertImage(const QString &name) |
| void | insertImage(const QImage &image, const QString &name = QString()) |
| QTextList * | insertList(const QTextListFormat &format) |
| QTextList * | insertList(QTextListFormat::Style style) |
| QTextTable * | insertTable(int rows, int columns, const QTextTableFormat &format) |
| QTextTable * | insertTable(int rows, int columns) |
| void | insertText(const QString &text) |
| void | insertText(const QString &text, const QTextCharFormat &format) |
| bool | isCopyOf(const QTextCursor &other) const |
| bool | isNull() const |
| void | joinPreviousEditBlock() |
| bool | keepPositionOnInsert() const |
| void | mergeBlockCharFormat(const QTextCharFormat &modifier) |
| void | mergeBlockFormat(const QTextBlockFormat &modifier) |
| void | mergeCharFormat(const QTextCharFormat &modifier) |
| bool | movePosition(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = MoveAnchor, int n = 1) |
| int | position() const |
| int | positionInBlock() const |
| void | removeSelectedText() |
| void | select(QTextCursor::SelectionType selection) |
| void | selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const |
| QString | выделенныйТекст() const |
| QTextDocumentFragment | выделение() const |
| int | конецВыделения() const |
| int | началоВыделения() const |
| void | установитьФорматСимволовБлока(const QTextCharFormat &format) |
| void | установитьФорматБлока(const QTextBlockFormat &format) |
| void | установитьФорматСимвола(const QTextCharFormat &format) |
| void | сохранитьПозициюПриВставке(bool b) |
| void | установитьПозицию(int pos, QTextCursor::MoveMode m = MoveAnchor) |
| void | установитьВертикальноеПеремещениеX(int x) |
| void | установитьВизуальноеПеремещение(bool b) |
| void | поменять(QTextCursor &other) |
| int | вертикальноеПеремещениеX() const |
| bool | визуальноеПеремещение() const |
| bool | operator!=(const QTextCursor &other) const |
| bool | operator<(const QTextCursor &other) const |
| bool | operator<=(const QTextCursor &other) const |
| bool | operator==(const QTextCursor &other) const |
| bool | operator>(const QTextCursor &other) const |
| bool | operator>=(const QTextCursor &other) const |
Подробное описание
Курсоры текста — это объекты, которые используются для доступа к содержимому и внутренней структуре текстовых документов с помощью программного интерфейса, имитирующего поведение курсора в текстовом редакторе. QTextCursor содержит информацию как о позиции курсора в QTextDocument, так и о любом выделении, которое он произвел.
QTextCursor смоделирован на поведении текстового курсора в текстовом редакторе, предоставляя программисту возможность выполнять стандартные действия через пользовательский интерфейс. Документ можно представить как одну непрерывную строку символов. Текущая позиция курсора (position()) всегда находится либо между двумя последовательными символами в строке, либо перед первым символом или после последнего. В дополнение к тексту документы могут содержать таблицы, списки, изображения и другие объекты, но с точки зрения разработчика документ можно рассматривать как одну длинную строку. Некоторые части этой строки могут находиться в определённых блоках (например, абзацах), ячейках таблицы, пунктах списка или других структурных элементах. Когда мы говорим о «текущем символе», мы подразумеваем символ, непосредственно перед позицией курсора в документе. Аналогично, «текущий блок» — это блок, содержащий позицию курсора.
QTextCursor также имеет позицию якоря (anchor()). Текст, расположенный между позицией якоря и позицией курсора, представляет собой выделение. Если позиция якоря совпадает с позицией курсора, выделения нет.
Позицию курсора можно изменить программно с помощью setPosition() и movePosition(); последнее также может использоваться для выделения текста. Для работы с выделениями см. selectionStart(), selectionEnd(), hasSelection(), clearSelection() и removeSelectedText().
Если позиция курсора находится в начале блока, atBlockStart() возвращает true; а если в конце блока, atBlockEnd() возвращает true. Формат текущего символа возвращается методом charFormat(), а формат текущего блока — методом blockFormat().
Форматирование можно применять к текущему документу с помощью функций setCharFormat(), mergeCharFormat(), setBlockFormat() и mergeBlockFormat(). Функции «set» заменят текущий формат символа или блока курсора, а функции «merge» добавят заданные свойства формата к текущему формату курсора. Если курсор имеет выделение, заданный формат применяется к выделенному участку. Обратите внимание, что когда выделен только фрагмент блока, формат блока применяется ко всему блоку. Текст в текущей позиции символа может быть преобразован в список с помощью createList().
Удаление можно осуществить с помощью deleteChar(), deletePreviousChar() и removeSelectedText().
Строки текста можно вставить в документ с помощью функции insertText(), блоки (представляющие новые абзацы) — с помощью insertBlock().
Существующие фрагменты текста можно вставить с помощью insertFragment(), но если требуется вставить фрагменты текста с различным форматированием, обычно проще использовать insertText() и указать формат символов.
В документ также можно вставлять различные типы структур высшего уровня:
- Списки — упорядоченные последовательности блоков, оформленные маркерами или символами. Они вставляются в указанном формате с помощью insertList().
- Таблицы вставляются с помощью функции insertTable() и могут иметь необязательный формат. Они содержат массив ячеек, по которым можно перемещаться с помощью курсора.
- Встраиваемые изображения вставляются с помощью insertImage(). Изображение можно указать в формате изображения или по имени.
- Фреймы вставляются вызовом insertFrame() с указанным форматом.
Действия можно сгруппировать (т.е. обработать как одно действие для отмены/повторного выполнения) с помощью beginEditBlock() и endEditBlock().
Перемещения курсора ограничены допустимыми позициями курсора. В латинском письме это между любыми двумя последовательными символами в тексте, перед первым символом или после последнего. В некоторых других системах письма перемещения курсора ограничены «кластерами» (например, слогом в деванагари или основной буквой с диакритическими знаками). Функции, такие как movePosition() и deleteChar(), ограничивают перемещение курсора этими допустимыми позициями.
См. также Обработка форматированного текста.
Документация по типам членов
перечисление QTextCursor::MoveMode
| Константа | Значение | Описание |
|---|---|---|
QTextCursor::MoveAnchor |
0 |
Перемещает якорь в ту же позицию, что и сам курсор. |
QTextCursor::KeepAnchor |
1 |
Удерживает якорь на месте. |
Если якорь удерживается на месте, а позиция курсора перемещается, текст между ними будет выделен.
перечисление QTextCursor::MoveOperation
| Константа | Значение | Описание |
|---|---|---|
QTextCursor::NoMove |
0 |
Удерживать курсор на месте |
QTextCursor::Start |
1 |
Переместиться к началу документа. |
QTextCursor::StartOfLine |
3 |
Переместиться к началу текущей строки. |
QTextCursor::StartOfBlock |
4 |
Переместиться к началу текущего блока. |
QTextCursor::StartOfWord |
5 |
Переместиться к началу текущего слова. |
QTextCursor::PreviousBlock |
6 |
Переместиться к началу предыдущего блока. |
QTextCursor::PreviousCharacter |
7 |
Переместиться к предыдущему символу. |
QTextCursor::PreviousWord |
8 |
Переместиться к началу предыдущего слова. |
QTextCursor::Up |
2 |
Переместиться вверх на одну строку. |
QTextCursor::Left |
9 |
Переместиться влево на один символ. |
QTextCursor::WordLeft |
10 |
Переместиться влево на одно слово. |
QTextCursor::End |
11 |
Переместиться к концу документа. |
QTextCursor::EndOfLine |
13 |
Переместиться к концу текущей строки. |
QTextCursor::EndOfWord |
14 |
Переместиться к концу текущего слова. |
QTextCursor::EndOfBlock |
15 |
Переместиться к концу текущего блока. |
QTextCursor::NextBlock |
16 |
Переместиться к началу следующего блока. |
QTextCursor::NextCharacter |
17 |
Переместиться к следующему символу. |
QTextCursor::NextWord |
18 |
Переместиться к следующему слову. |
QTextCursor::Down |
12 |
Переместиться вниз на одну строку. |
QTextCursor::Right |
19 |
Переместиться вправо на один символ. |
QTextCursor::WordRight |
20 |
Переместиться вправо на одно слово. |
QTextCursor::NextCell |
21 |
Переместиться к началу следующей ячейки таблицы внутри текущей таблицы. Если текущая ячейка является последней ячейкой в строке, курсор переместится в первую ячейку следующей строки. |
QTextCursor::PreviousCell |
22 |
Переместиться к началу предыдущей ячейки таблицы внутри текущей таблицы. Если текущая ячейка является первой ячейкой в строке, курсор переместится в последнюю ячейку предыдущей строки. |
QTextCursor::NextRow |
23 |
Переместиться к первой новой ячейке следующей строки в текущей таблице. |
QTextCursor::PreviousRow |
24 |
Переместиться к последней ячейке предыдущей строки в текущей таблице. |
См. также movePosition().
enum QTextCursor::SelectionType
Этот перечисление описывает типы выделения, которые могут быть применены с помощью функции select().
| Константа | Значение | Описание |
|---|---|---|
QTextCursor::Document |
3 |
Выделяет весь документ. |
QTextCursor::BlockUnderCursor |
2 |
Выделяет блок текста под курсором. |
QTextCursor::LineUnderCursor |
1 |
Выделяет строку текста под курсором. |
QTextCursor::WordUnderCursor |
0 |
Выделяет слово под курсором. Если курсор не расположен внутри строки выбираемых символов, текст не выделяется. |
Документация по функциям-членам
QTextCursor::QTextCursor(const QTextCursor &cursor)
Создаёт новый курсор, являющийся копией cursor.
QTextCursor::QTextCursor(const QTextBlock &block)
Создаёт курсор, указывающий на начало block.
QTextCursor::QTextCursor(QTextFrame *frame)
Создаёт курсор, указывающий на начало frame.
QTextCursor::QTextCursor(QTextDocument *document)
Создаёт курсор, указывающий на начало document.
QTextCursor::QTextCursor()
Создаёт нулевой курсор.
QTextCursor &QTextCursor::operator=(const QTextCursor &cursor)
Создаёт копию cursor и присваивает её этому QTextCursor. Обратите внимание, что QTextCursor — это класс с неявным совместным использованием.
QTextCursor::~QTextCursor()
Удаляет QTextCursor.
int QTextCursor::anchor() const
Возвращает позицию якоря; это то же самое, что position(), за исключением случаев, когда есть выделение, в котором position() отмечает один конец выделения, а anchor() — другой конец. Как и позиция курсора, позиция якоря находится между символами.
См. также position(), setPosition(), movePosition(), selectionStart() и selectionEnd().
bool QTextCursor::atBlockEnd() const
Возвращает true если курсор находится в конце блока; в противном случае возвращает false.
См. также atBlockStart() и atEnd().
bool QTextCursor::atBlockStart() const
Возвращает true если курсор находится в начале блока; в противном случае возвращает false.
См. также atBlockEnd() и atStart().
bool QTextCursor::atEnd() const
Возвращает true если курсор находится в конце документа; в противном случае возвращает false.
См. также atStart() и atBlockEnd().
bool QTextCursor::atStart() const
Возвращает true если курсор находится в начале документа; в противном случае возвращает false.
См. также atBlockStart() и atEnd().
void QTextCursor::beginEditBlock()
Указывает начало блока операций редактирования документа, которые должны отображаться как единая операция с точки зрения отмены/повторной операции.
Например:
QTextCursor cursor(textDocument);
cursor.beginEditBlock();
cursor.insertText("Hello");
cursor.insertText("World");
cursor.endEditBlock();
textDocument->undo(); Вызов undo() приведет к отмене обеих вставок, в результате чего будут удалены и «World», и «Hello».
Возможны вложенные вызовы beginEditBlock и endEditBlock. Верхняя пара определит область действия операции отмены/повторной операции.
См. также endEditBlock().
QTextBlock QTextCursor::block() const
Возвращает блок, содержащий курсор.
QTextCharFormat QTextCursor::blockCharFormat() const
Возвращает форматирование символов блока, в котором находится курсор.
Форматирование символов блока — это форматирование, используемое при вставке текста в начало пустого блока.
См. также setBlockCharFormat().
QTextBlockFormat QTextCursor::blockFormat() const
Возвращает форматирование блока, в котором находится курсор.
См. также setBlockFormat() и charFormat().
int QTextCursor::blockNumber() const
Возвращает номер блока, в котором находится курсор, или 0, если курсор недействителен.
Обратите внимание, что эта функция имеет смысл только в документах без сложных объектов, таких как таблицы или фреймы.
QTextCharFormat QTextCursor::charFormat() const
Возвращает формат символа, расположенного непосредственно перед позицией курсора position(). Если курсор расположен в начале текстового блока, который не пуст, то возвращается формат символа, расположенного непосредственно после курсора.
См. также setCharFormat(), insertText() и blockFormat().
void QTextCursor::clearSelection()
Очищает текущую выделенную область, установив якорь в позицию курсора.
Обратите внимание, что это не удаляет текст выделения.
См. также removeSelectedText() и hasSelection().
int QTextCursor::columnNumber() const
Возвращает позицию курсора в строке.
Обратите внимание, что это номер столбца относительно перевода строки, а не относительно блока (т.е. абзаца).
Вероятно, вы хотите вызвать positionInBlock() вместо этого.
См. также positionInBlock().
QTextList *QTextCursor::createList(const QTextListFormat &format)
Создает и возвращает новый список с заданным format и делает текущий абзац, в котором находится курсор, первой строкой списка.
См. также insertList() и currentList().
QTextList *QTextCursor::createList(QTextListFormat::Style style)
Это перегруженный метод.
Создает и возвращает новый список со стилем style, делая текущий абзац курсора первой строкой списка.
Стиль определяется перечислением QTextListFormat::Style.
См. также insertList() и currentList().
QTextFrame *QTextCursor::currentFrame() const
Возвращает указатель на текущий фрейм. Возвращает nullptr если курсор недействителен.
См. также insertFrame().
QTextList *QTextCursor::currentList() const
Возвращает текущий список, если позиция курсора position() находится внутри блока, который является частью списка; в противном случае возвращает nullptr.
См. также insertList() и createList().
QTextTable *QTextCursor::currentTable() const
Возвращает указатель на текущую таблицу, если позиция курсора position() находится внутри блока, который является частью таблицы; в противном случае возвращает nullptr.
См. также insertTable().
void QTextCursor::deleteChar()
Если текст не выделен, удаляет символ по текущей позиции курсора; в противном случае удаляет выделенный текст.
См. также deletePreviousChar(), hasSelection() и clearSelection().
void QTextCursor::deletePreviousChar()
Если текст не выделен, удаляет символ перед текущей позицией курсора; в противном случае удаляет выделенный текст.
См. также deleteChar(), hasSelection() и clearSelection().
QTextDocument *QTextCursor::document() const
Возвращает документ, с которым связан этот курсор.
void QTextCursor::endEditBlock()
Указывает конец блока операций редактирования документа, которые должны отображаться как единая операция с точки зрения отмены/повторной операции.
См. также beginEditBlock().
bool QTextCursor::hasComplexSelection() const
Возвращает true если курсор содержит выделение, которое не является просто диапазоном от selectionStart() до selectionEnd(); в противном случае возвращает false.
Сложные выделения — это те, которые охватывают как минимум две ячейки в таблице; их объем указан в selectedTableCells().
bool QTextCursor::hasSelection() const
Возвращает true если курсор содержит выделение; в противном случае возвращает false.
void QTextCursor::insertBlock()
Вставляет новый пустой блок в позицию курсора position() с текущим blockFormat() и charFormat().
См. также setBlockFormat().
void QTextCursor::insertBlock(const QTextBlockFormat &format)
Это перегруженный метод.
Вставляет новый пустой блок в позицию курсора position() с форматом блока format и текущим charFormat() как форматом символов блока.
См. также setBlockFormat().
void QTextCursor::insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat)
Это перегруженный метод.
Вставляет новый пустой блок в позицию курсора position() с форматом блока format и charFormat как форматом символов блока.
См. также setBlockFormat().
void QTextCursor::insertFragment(const QTextDocumentFragment &fragment)
Вставляет текст fragment в текущую позицию position().
QTextFrame *QTextCursor::insertFrame(const QTextFrameFormat &format)
Вставляет фрейм с заданным format в текущую позицию курсора position(), перемещает позицию курсора position() внутри фрейма и возвращает фрейм.
Если курсор содержит выделение, все выделение перемещается во фрейм.
См. также hasSelection().
void QTextCursor::insertHtml(const QString &html)
Вставляет текст html в текущую позицию position(). Текст интерпретируется как HTML.
Примечание: При использовании этой функции со стилем, стиль будет применяться только к текущему блоку в документе. Для применения стиля по всему документу используйте QTextDocument::setDefaultStyleSheet() вместо этого.
void QTextCursor::insertImage(const QTextImageFormat &format)
Вставляет изображение, определенное format, в текущую позицию position().
void QTextCursor::insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment)
Это перегруженный метод.
Вставляет изображение, определенное заданным format, в текущую позицию курсора с указанным alignment.
См. также position().
void QTextCursor::insertImage(const QString &name)
Это перегруженный метод.
Удобный метод для вставки изображения с заданным name в текущую позицию position().
QImage img;
textDocument->addResource(QTextDocument::ImageResource, QUrl("myimage"), img);
cursor.insertImage("myimage"); void QTextCursor::insertImage(const QImage &image, const QString &name = QString())
Это перегруженный метод.
Удобная функция для вставки данного image с необязательным name в текущую позицию position().
QTextList *QTextCursor::insertList(const QTextListFormat &format)
Вставляет новый блок в текущую позицию и делает его первой строкой в только что созданном списке с заданным форматом. Возвращает созданный список.
См. также currentList(), createList(), и insertBlock().
QTextList *QTextCursor::insertList(QTextListFormat::Style style)
Это перегруженный метод.
Вставляет новый блок в текущую позицию и делает его первой строкой в только что созданном списке с заданным стилем. Возвращает созданный список.
См. также currentList(), createList(), и insertBlock().
QTextTable *QTextCursor::insertTable(int rows, int columns, const QTextTableFormat &format)
Создаёт новую таблицу с заданным числом строк и столбцов в указанном формате, вставляет её в текущую позицию курсора position() в документе и возвращает объект таблицы. Курсор перемещается в начало первой ячейки.
Таблица должна содержать хотя бы одну строку и один столбец.
См. также currentTable().
QTextTable *QTextCursor::insertTable(int rows, int columns)
Это перегруженный метод.
Создаёт новую таблицу с заданным числом строк и столбцов, вставляет её в текущую позицию курсора position() в документе и возвращает объект таблицы. Курсор перемещается в начало первой ячейки.
Таблица должна содержать хотя бы одну строку и один столбец.
См. также currentTable().
void QTextCursor::insertText(const QString &text)
Вставляет text в текущую позицию, используя текущий формат символа.
Если есть выделение, выделение удаляется и заменяется на text, например:
cursor.clearSelection();
cursor.movePosition(QTextCursor::NextWord, QTextCursor::KeepAnchor);
cursor.insertText("Hello World"); Это очищает любое существующее выделение, выделяет слово в курсоре (т.е. от позиции position() вперёд) и заменяет выделение фразой "Hello World".
Любые символы ASCII новой строки (\n) во вставляемом тексте преобразуются в разделители блоков Юникода, соответствующие вызовам insertBlock().
См. также charFormat() и hasSelection().
void QTextCursor::insertText(const QString &text, const QTextCharFormat &format)
Это перегруженный метод.
Вставляет text в текущую позицию с заданным форматом.
bool QTextCursor::isCopyOf(const QTextCursor &other) const
Возвращает true если этот курсор и other являются копиями друг друга, т.е. один из них был создан как копия другого, и ни один из них не перемещался с момента создания. Это гораздо строже, чем равенство.
См. также operator=() и operator==().
bool QTextCursor::isNull() const
Возвращает true если курсор null; в противном случае возвращает false. Нулевой курсор создается конструктором по умолчанию.
void QTextCursor::joinPreviousEditBlock()
Подобно beginEditBlock() указывает на начало блока операций редактирования, которые должны отображаться как одна операция для отмены/повторного выполнения. Однако, в отличие от beginEditBlock(), он не начинает новый блок, а отменяет предыдущий вызов endEditBlock() и, следовательно, делает последующие операции частью предыдущего блока редактирования.
Например:
QTextCursor cursor(textDocument);
cursor.beginEditBlock();
cursor.insertText("Hello");
cursor.insertText("World");
cursor.endEditBlock();
// ...
cursor.joinPreviousEditBlock();
cursor.insertText("Hey");
cursor.endEditBlock();
textDocument->undo(); Вызов undo() вызовет отмену всех трёх вставок.
См. также beginEditBlock() и endEditBlock().
bool QTextCursor::keepPositionOnInsert() const
Возвращает, должен ли курсор сохранять свою текущую позицию при вставке текста в позицию курсора.
Значение по умолчанию — false;
См. также setKeepPositionOnInsert().
void QTextCursor::mergeBlockCharFormat(const QTextCharFormat &modifier)
Изменяет формат символов блока текущего блока (или всех блоков, содержащихся в выделении) с помощью формата блока, заданного modifier.
См. также setBlockCharFormat().
void QTextCursor::mergeBlockFormat(const QTextBlockFormat &modifier)
Изменяет формат блока текущего блока (или всех блоков, содержащихся в выделении) с помощью формата блока, заданного modifier.
См. также setBlockFormat() и blockFormat().
void QTextCursor::mergeCharFormat(const QTextCharFormat &modifier)
Объединяет текущий формат символа курсора со свойствами, описанными в формате modifier. Если у курсора есть выделение, эта функция применяет все свойства, заданные в modifier, ко всем форматам символов, которые являются частью выделения.
См. также hasSelection() и setCharFormat().
bool QTextCursor::movePosition(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = MoveAnchor, int n = 1)
Перемещает курсор, выполняя заданную operation n раз, используя указанный mode, и возвращает true если все операции были выполнены успешно; в противном случае возвращает false.
Например, если эта функция многократно используется для перехода к концу следующего слова, в конечном итоге она завершится ошибкой, когда будет достигнут конец документа.
По умолчанию операция перемещения выполняется один раз (n = 1).
Если mode равно KeepAnchor, курсор выделяет текст, по которому он перемещается. Это тот же эффект, который пользователь достигает, удерживая нажатой клавишу Shift и перемещая курсор клавишами курсора.
См. также setVisualNavigation().
int QTextCursor::position() const
Возвращает абсолютную позицию курсора в документе. Курсор расположен между символами.
Примечание: В данном случае «символы» относятся к строке объектов QChar, т. е. 16-разрядных символов Юникода, и позиция рассматривается как индекс в этой строке. Это не обязательно соответствует отдельным графемам в письменной системе, поскольку одна графема может быть представлена несколькими символами Юникода, например, в случае суррогатных пар, лингвистических лигатур или диакритических знаков.
См. также setPosition(), movePosition(), anchor() и positionInBlock().
int QTextCursor::positionInBlock() const
Возвращает относительную позицию курсора в блоке. Курсор расположен между символами.
Это эквивалентно position() - block().position().
Примечание: В данном случае «символы» относятся к строке объектов QChar, т. е. 16-разрядных символов Юникода, и позиция рассматривается как индекс в этой строке. Это не обязательно соответствует отдельным графемам в письменной системе, поскольку одна графема может быть представлена несколькими символами Юникода, например, в случае суррогатных пар, лингвистических лигатур или диакритических знаков.
См. также position().
void QTextCursor::removeSelectedText()
Если есть выделение, его содержимое удаляется; в противном случае ничего не делается.
См. также hasSelection().
void QTextCursor::select(QTextCursor::SelectionType selection)
Выделяет текст в документе в соответствии с заданным selection.
void QTextCursor::selectedTableCells(int *firstRow, int *numRows, int *firstColumn, int *numColumns) const
Если выделение охватывает ячейки таблицы, firstRow заполняется номером первой строки в выделении, firstColumn номером первого столбца в выделении, а numRows и numColumns — числом строк и столбцов в выделении. Если выделение не охватывает ячеек таблицы, результаты безопасны, но не определены.
QString QTextCursor::selectedText() const
Возвращает текст текущего выделения (который может быть пустым). Возвращается только текст без информации о форматировании форматированного текста. Если вам нужен фрагмент документа (т.е. форматированный богатый текст), используйте selection() вместо этого.
Примечание: Если выделение, полученное из редактора, охватывает символ перевода строки, текст будет содержать символ разделителя абзацев Unicode U+2029 вместо символа новой строки \n. Используйте QString::replace(), чтобы заменить эти символы символами новой строки.
QTextDocumentFragment QTextCursor::selection() const
Возвращает текущее выделение (которое может быть пустым) со всей информацией о его форматировании. Если вам нужен только выделенный текст (т.е. простой текст), используйте selectedText() вместо этого.
Примечание: В отличие от QTextDocumentFragment::toPlainText(), selectedText() может включать специальные символы Unicode, такие как QChar::ParagraphSeparator.
См. также QTextDocumentFragment::toPlainText().
int QTextCursor::selectionEnd() const
Возвращает конец выделения или position(), если курсор не имеет выделения.
См. также selectionStart(), position() и anchor().
int QTextCursor::selectionStart() const
Возвращает начало выделения или position(), если курсор не имеет выделения.
См. также selectionEnd(), position() и anchor().
void QTextCursor::setBlockCharFormat(const QTextCharFormat &format)
Устанавливает форматирование символов текущего абзаца (или всех абзацев, содержащихся в выделении) в format.
См. также blockCharFormat().
void QTextCursor::setBlockFormat(const QTextBlockFormat &format)
Устанавливает форматирование текущего абзаца (или всех абзацев, содержащихся в выделении) в format.
См. также blockFormat() и mergeBlockFormat().
void QTextCursor::setCharFormat(const QTextCharFormat &format)
Устанавливает текущее форматирование символов курсора в заданное format. Если курсор имеет выделение, заданное format применяется к текущему выделению.
См. также charFormat(), hasSelection() и mergeCharFormat().
void QTextCursor::setKeepPositionOnInsert(bool b)
Определяет, должен ли курсор сохранять свою текущую позицию при вставке текста в текущую позицию курсора.
Если b равно true, курсор сохраняет свою текущую позицию при вставке текста в позицию курсора. Если b равно false, курсор перемещается вместе с вставленным текстом.
По умолчанию значение равно false.
Обратите внимание, что курсор всегда перемещается при вставке текста перед текущей позицией курсора, и всегда сохраняет свою позицию при вставке текста после текущей позиции курсора.
См. также keepPositionOnInsert().
void QTextCursor::setPosition(int pos, QTextCursor::MoveMode m = MoveAnchor)
Перемещает курсор в абсолютную позицию в документе, указанную pos, используя MoveMode режим, заданный m. Курсор позиционируется между символами.
Примечание: В данном случае «символы» относятся к строке объектов QChar, т.е. 16-разрядным символам Unicode, а pos рассматривается как индекс в этой строке. Это необязательно соответствует отдельным графемам в письменной системе, так как одна графема может быть представлена несколькими символами Unicode, например, в случае пар суррогатов, лингвистических лигатур или диакритических знаков. Для более универсального подхода к навигации по документу используйте movePosition(), которое будет учитывать фактические границы графем в тексте.
См. также position(), movePosition() и anchor().
void QTextCursor::setVerticalMovementX(int x)
Устанавливает визуальное положение x для вертикальных перемещений курсора в x.
Вертикальное положение перемещения x автоматически сбрасывается при горизонтальном перемещении курсора и остается неизменным при вертикальном перемещении. Этот механизм позволяет курсору перемещаться вверх и вниз по визуальной прямой линии с пропорциональными шрифтами и плавно «перескакивать» короткие строки.
Значение -1 указывает на отсутствие предварительно заданного положения x. Оно будет установлено автоматически при следующем перемещении курсора вверх или вниз.
См. также verticalMovementX().
void QTextCursor::setVisualNavigation(bool b)
Устанавливает визуальную навигацию в b.
Визуальная навигация означает пропуск скрытых абзацев текста. По умолчанию значение равно false.
См. также visualNavigation() и movePosition().
[since 5.0] void QTextCursor::swap(QTextCursor &other)
Меняет местами экземпляр этого текстового курсора с other. Эта функция очень быстрая и никогда не терпит неудач.
Эта функция была представлена в Qt 5.0.
int QTextCursor::verticalMovementX() const
Возвращает визуальное положение x для вертикальных перемещений курсора.
Значение -1 указывает на отсутствие предварительно заданного положения x. Оно будет установлено автоматически при следующем перемещении курсора вверх или вниз.
См. также setVerticalMovementX().
bool QTextCursor::visualNavigation() const
Возвращает true если курсор выполняет визуальную навигацию; в противном случае возвращает false.
Визуальная навигация означает пропуск скрытых абзацев текста. По умолчанию значение равно false.
См. также setVisualNavigation() и movePosition().
bool QTextCursor::operator!=(const QTextCursor &other) const
Возвращает true если курсор other находится в другой позиции в документе по сравнению с этим курсором; в противном случае возвращает false.
bool QTextCursor::operator<(const QTextCursor &other) const
Возвращает true если курсор other расположен позже в документе, чем этот курсор; в противном случае возвращает false.
bool QTextCursor::operator<=(const QTextCursor &other) const
Возвращает true если курсор other расположен позже или в той же позиции в документе, что и этот курсор; в противном случае возвращает false.
bool QTextCursor::operator==(const QTextCursor &other) const
Возвращает true если курсор other находится в той же позиции в документе, что и этот курсор; в противном случае возвращает false.
bool QTextCursor::operator>(const QTextCursor &other) const
Возвращает true если курсор other расположен раньше в документе, чем этот курсор; в противном случае возвращает false.
bool QTextCursor::operator>=(const QTextCursor &other) const
Возвращает true если курсор other расположен раньше или в той же позиции в документе, что и этот курсор; в противном случае возвращает false.
© The Qt Company Ltd
Licensed under the GNU Free Documentation License, Version 1.3.
https://doc.qt.io/qt-6.0/qtextcursor.html