Класс QTextCursor
Класс QTextCursor предоставляет API для доступа к и изменения QTextDocuments. Подробнее...
| Заголовок: | #include <QTextCursor> |
| qmake: | QT += gui |
Примечание: Все функции в этом классе являются перевходными.
Публичные типы
| Перечисление | MoveMode { MoveAnchor, KeepAnchor } |
| Перечисление | MoveOperation { NoMove, Start, StartOfLine, StartOfBlock, StartOfWord, …, PreviousRow } |
| Перечисление | SelectionType { Document, BlockUnderCursor, LineUnderCursor, WordUnderCursor } |
Публичные функции
| 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().
перечисление 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.
Эта функция была добавлена в Qt 4.6.
См. также 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, если курсор недействителен.
Обратите внимание, что эта функция имеет смысл только в документах без сложных объектов, таких как таблицы или фреймы.
Эта функция была добавлена в Qt 4.2.
QTextCharFormat QTextCursor::charFormat() const
Возвращает формат символа, непосредственно перед позицией курсора position(). Если курсор расположен в начале непустого текстового блока, возвращается формат символа, непосредственно после курсора.
См. также setCharFormat(), insertText() и blockFormat().
void QTextCursor::clearSelection()
Очищает текущую выделение, установив якорь в позицию курсора.
Обратите внимание, что это не удаляет текст выделения.
См. также removeSelectedText() и hasSelection().
int QTextCursor::columnNumber() const
Возвращает позицию курсора в своей строке.
Обратите внимание, что это номер колонки, относительно переведенной строки, а не относительно блока (т.е. абзаца).
Вероятно, вы хотите вызвать positionInBlock() вместо этого.
Эта функция была добавлена в Qt 4.2.
См. также positionInBlock().
QTextList *QTextCursor::createList(const QTextListFormat &format)
Создаёт и возвращает новый список с заданным форматом, и делает текущий абзац, в котором находится курсор, первой строкой списка.
См. также insertList() и currentList().
QTextList *QTextCursor::createList(QTextListFormat::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
Возвращает документ, с которым связан этот курсор.
Эта функция была добавлена в Qt 4.5.
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)
Вставляет фрейм с заданным форматом в текущую позицию курсора position(), перемещает позицию курсора position() внутри фрейма и возвращает фрейм.
Если курсор содержит выделение, всё выделение перемещается внутрь фрейма.
См. также hasSelection().
void QTextCursor::insertHtml(const QString &html)
Вставляет текст html в текущую позицию position(). Текст интерпретируется как HTML.
Примечание: При использовании этой функции со стилями, стили будут применены только к текущему блоку в документе. Для применения стилей ко всему документу, используйте QTextDocument::setDefaultStyleSheet() вместо этого.
Эта функция была добавлена в Qt 4.2.
void QTextCursor::insertImage(const QTextImageFormat &format)
Вставляет изображение, определённое format, в текущую позицию position().
void QTextCursor::insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment)
Это перегруженная функция.
Вставляет изображение, определённое заданным форматом, в текущую позицию курсора с указанным выравниванием.
Эта функция была добавлена в Qt 4.2.
См. также position().
void QTextCursor::insertImage(const QString &name)
Это перегруженная функция.
Удобный метод для вставки изображения с заданным именем в текущую позицию position().
void QTextCursor::insertImage(const QImage &image, const QString &name = QString())
Это перегруженная функция.
Функция для вставки заданного изображения с необязательным именем в текущей позиции.
Эта функция была добавлена в Qt 4.5.
QTextList *QTextCursor::insertList(const QTextListFormat &format)
Вставляет новый блок в текущую позицию и делает его первой строкой нового списка с заданным форматом. Возвращает созданный список.
См. также currentList(), createList() и insertBlock().
QTextList *QTextCursor::insertList(QTextListFormat::Style 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)
Вставляет текст в текущую позицию, используя текущий формат символов.
Если есть выделение, выделение удаляется и заменяется текстом, например:
cursor.clearSelection();
cursor.movePosition(QTextCursor::NextWord, QTextCursor::KeepAnchor);
cursor.insertText("Hello World"); Это очищает любое существующее выделение, выделяет слово в позиции курсора (т.е. от позиции position() вперёд) и заменяет выделение фразой "Hello World".
Любые символы ASCII новой строки (\n) во вставленном тексте преобразуются в разделители блоков Unicode, соответствующие вызовам insertBlock().
См. также charFormat() и hasSelection().
void QTextCursor::insertText(const QString &text, const QTextCharFormat &format)
Это перегруженная функция.
Вставляет текст в текущую позицию с заданным форматом.
bool QTextCursor::isCopyOf(const QTextCursor &other) const
Возвращает true если этот курсор и other являются копиями друг друга, т.е. один из них был создан как копия другого и ни один из них не перемещался с момента создания. Это значительно строже, чем равенство.
См. также operator=() и operator==().
bool QTextCursor::isNull() const
Возвращает true если курсор пустой; в противном случае возвращает 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.
Эта функция была добавлена в Qt 4.7.
См. также 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-битных символов Unicode, а позиция рассматривается как индекс в этой строке. Это необязательно соответствует отдельным графемам в письменности, так как одна графема может быть представлена несколькими символами Unicode, например, в случае пар суррогатов, лингвистических лигатур или диакритических знаков.
См. также setPosition(), movePosition(), anchor() и positionInBlock().
int QTextCursor::positionInBlock() const
Возвращает относительную позицию курсора в блоке. Курсор расположен между символами.
Это эквивалентно position() - block().position().
Примечание: "символы" в данном случае относятся к строке объектов QChar, т.е. 16-битных символов Unicode, а позиция рассматривается как индекс в этой строке. Это необязательно соответствует отдельным графемам в письменности, так как одна графема может быть представлена несколькими символами Unicode, например, в случае пар суррогатов, лингвистических лигатур или диакритических знаков.
Эта функция была добавлена в Qt 4.7.
См. также 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.
Обратите внимание, что курсор всегда перемещается при вставке текста перед текущим положением курсора, и всегда сохраняет свое положение при вставке текста после текущего положения курсора.
Эта функция была введена в Qt 4.7.
См. также keepPositionOnInsert().
void QTextCursor::setPosition(int pos, QTextCursor::MoveMode m = MoveAnchor)
Перемещает курсор в абсолютную позицию в документе, указанную pos, используя способ перемещения, указанный m. Курсор устанавливается между символами.
Примечание: В данном случае "символы" относятся к строке объектов QChar, т. е. 16-битных символов Unicode, а pos считается индексом в этой строке. Это не обязательно соответствует отдельным графемам в системе письма, поскольку одна графема может быть представлена несколькими символами Unicode, например, в случае пар суррогатов, лингвистических лигатур или диакритических знаков. Для более универсального подхода к навигации по документу используйте movePosition(), который будет учитывать фактические границы графем в тексте.
См. также position(), movePosition() и anchor().
void QTextCursor::setVerticalMovementX(int x)
Устанавливает визуальное положение x для вертикальных перемещений курсора в x.
Визуальное положение x вертикального перемещения курсора автоматически очищается при горизонтальном перемещении курсора и остается неизменным при вертикальном перемещении. Механизм позволяет курсору перемещаться вверх и вниз по визуально прямой линии с пропорциональными шрифтами и плавно «перескакивать» через короткие строки.
Значение -1 указывает на отсутствие заданного положения x. Оно будет установлено автоматически при следующем перемещении курсора вверх или вниз.
Эта функция была введена в Qt 4.7.
См. также verticalMovementX().
void QTextCursor::setVisualNavigation(bool b)
Устанавливает визуальную навигацию в b.
Визуальная навигация означает пропуск скрытых абзацев текста. По умолчанию значение равно false.
Эта функция была введена в Qt 4.4.
См. также visualNavigation() и movePosition().
void QTextCursor::swap(QTextCursor &other)
Меняет местами экземпляры этого курсора текста с other. Эта функция очень быстрая и никогда не терпит неудач.
Эта функция была введена в Qt 5.0.
int QTextCursor::verticalMovementX() const
Возвращает визуальное положение x для вертикальных перемещений курсора.
Значение -1 указывает на отсутствие заданного положения x. Оно будет установлено автоматически при следующем перемещении курсора вверх или вниз.
Эта функция была введена в Qt 4.7.
См. также setVerticalMovementX().
bool QTextCursor::visualNavigation() const
Возвращает true , если курсор выполняет визуальную навигацию; в противном случае возвращает false.
Визуальная навигация означает пропуск скрытых абзацев текста. По умолчанию значение равно false.
Эта функция была введена в Qt 4.4.
См. также 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-5.15/qtextcursor.html