QTextCursor Class
QTextCursor クラスは、QTextDocument にアクセスしたり変更を加えたりするための API を提供します。詳細...
| ヘッダー: | #include <QTextCursor> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
- 継承されたメンバーを含む、すべてのメンバーの一覧
- QTextCursor は、リッチテキスト処理 APIおよび暗黙的に共有されるクラスの一部です。
注:このクラスのすべての関数は再入可能です。
パブリック型
| enum | MoveMode { MoveAnchor, KeepAnchor } |
| enum | MoveOperation { NoMove, Start, StartOfLine, StartOfBlock, StartOfWord, …, PreviousRow } |
| enum | SelectionType { Document, BlockUnderCursor, LineUnderCursor, WordUnderCursor } |
パブリック関数
| QTextCursor() | |
| QTextCursor(QTextDocument *document) | |
| QTextCursor(QTextFrame *frame) | |
| QTextCursor(const QTextBlock &block) | |
| QTextCursor(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 QString &name) |
| void | insertImage(const QImage &image, const QString &name = QString()) |
| void | insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment) |
| QTextList * | insertList(const QTextListFormat &format) |
| QTextList * | insertList(QTextListFormat::Style style) |
(since 6.4) void | insertMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub) |
| 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 | selectedText() const |
| QTextDocumentFragment | selection() const |
| int | selectionEnd() const |
| int | selectionStart() const |
| void | setBlockCharFormat(const QTextCharFormat &format) |
| void | setBlockFormat(const QTextBlockFormat &format) |
| void | setCharFormat(const QTextCharFormat &format) |
| void | setKeepPositionOnInsert(bool b) |
| void | setPosition(int pos, QTextCursor::MoveMode m = MoveAnchor) |
| void | setVerticalMovementX(int x) |
| void | setVisualNavigation(bool b) |
| void | swap(QTextCursor &other) |
| int | verticalMovementX() const |
| bool | visualNavigation() const |
| bool | operator!=(const QTextCursor &other) const |
| bool | operator<(const QTextCursor &other) const |
| bool | operator<=(const QTextCursor &other) const |
| QTextCursor & | operator=(const QTextCursor &cursor) |
| bool | operator==(const QTextCursor &other) const |
| bool | operator>(const QTextCursor &other) const |
| bool | operator>=(const QTextCursor &other) const |
詳細な説明
テキストカーソルは、テキストエディタにおけるカーソルの動作を模倣したプログラミングインターフェースを介して、テキストドキュメントの内容や基盤となる構造にアクセスし、それらを変更するために使用されるオブジェクトです。QTextCursor には、QTextDocument 内のカーソルの位置と、カーソルによって行われた選択に関する情報が含まれています。
QTextCursor は、テキストエディタにおけるテキストカーソルの動作をモデルにしており、ユーザーインターフェースを通じて標準的な操作を実行するためのプログラム的な手段を提供します。ドキュメントは、単一の文字列として考えることができます。 したがって、カーソルの現在のposition()は、常に文字列内の2つの連続した文字の間、あるいは文字列の最初の文字の前、または最後の文字の後のいずれかになります。ドキュメントにはテキストに加えて、表、リスト、画像、その他のオブジェクトが含まれることもありますが、開発者の観点からは、ドキュメントを1つの長い文字列として扱うことができます。 その文字列の一部は、特定のブロック(例:段落)内、あるいは表のセル内、リストの項目内、その他の構造要素内に存在すると見なすことができます。 「現在の文字」とは、文書内のカーソルposition()の直前にある文字を指します。同様に、「現在のブロック」とは、カーソルposition() が含まれるブロックを指します。
QTextCursor には、anchor() による位置もあります。anchor() とposition() の間に含まれるテキストが選択範囲となります。anchor() ==position() の場合、選択範囲は存在しません。
カーソル位置は、setPosition() およびmovePosition() を使用してプログラムで変更できます。後者はテキストの選択にも使用できます。選択範囲については、selectionStart()、selectionEnd()、hasSelection()、clearSelection()、およびremoveSelectedText() を参照してください。
position()がブロックの先頭にある場合、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() を使用してグループ化(つまり、元に戻す/やり直しにおいて単一のアクションとして扱う)することができます。
カーソルの移動は、有効なカーソル位置に制限されます。ラテン文字では、これはテキスト内の任意の2つの連続する文字の間、最初の文字の前、または最後の文字の後となります。 他のいくつかの文字体系では、カーソルの移動は「クラスター」(例:デーヴァナガリー文字の1音節、または基本文字と発音記号の組み合わせ)に制限されます。movePosition() やdeleteChar() などの関数は、カーソルの移動をこれらの有効な位置に制限します。
「リッチテキスト処理」も参照してください 。
メンバ型のドキュメント
enum QTextCursor::MoveMode
| 定数 | 値 | 説明 |
|---|---|---|
QTextCursor::MoveAnchor | 0 | アンカーをカーソルと同じ位置に移動します。 |
QTextCursor::KeepAnchor | 1 | アンカーを現在の位置に保持します。 |
anchor() をその場に留め、position() を移動させると、その間のテキストが選択されます。
enum 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 | 1行上に移動します。 |
QTextCursor::Left | 9 | 1文字左に移動します。 |
QTextCursor::WordLeft | 10 | 1語分左に移動します。 |
QTextCursor::End | 11 | 文書の末尾に移動します。 |
QTextCursor::EndOfLine | 13 | 現在の行の末尾に移動します。 |
QTextCursor::EndOfWord | 14 | 現在の単語の末尾に移動します。 |
QTextCursor::EndOfBlock | 15 | 現在のブロックの末尾に移動します。 |
QTextCursor::NextBlock | 16 | 次のブロックの先頭に移動します。 |
QTextCursor::NextCharacter | 17 | 次の文字に移動します。テキストが選択されている場合、movePosition(NextCharacter, MoveAnchor) を最初に呼び出すと、カーソルを移動させることなく、そのテキストの選択が解除されます。 |
QTextCursor::NextWord | 18 | 次の単語に移動します。 |
QTextCursor::Down | 12 | 1 行下に移動します。 |
QTextCursor::Right | 19 | 1 文字右に移動します。 |
QTextCursor::WordRight | 20 | 1 語分右に移動します。 |
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()
nullカーソルを生成します。
[explicit] QTextCursor::QTextCursor(QTextDocument *document)
document の先頭を指すカーソルを作成します。
[explicit] QTextCursor::QTextCursor(QTextFrame *frame)
frame の先頭を指すカーソルを作成します。
[explicit] QTextCursor::QTextCursor(const QTextBlock &block)
block の先頭を指すカーソルを作成します。
QTextCursor::QTextCursor(const QTextCursor &cursor)
cursor のコピーである新しいカーソルを作成します。
[noexcept] 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
カーソルに、単にselectionStart() からselectionEnd() までの範囲ではない選択範囲が含まれている場合は、true を返します。それ以外の場合は、false を返します。
複合選択とは、テーブル内の少なくとも2つのセルにまたがる選択のことです。その範囲はselectedTableCells() によって指定されます。
bool QTextCursor::hasSelection() const
カーソルに選択範囲が含まれている場合は `true ` を返し、そうでない場合は `false` を返します。
void QTextCursor::insertBlock()
カーソル位置に、現在のblockFormat()およびcharFormat()を含む新しい空のブロックを挿入します(position())。
setBlockFormat()も参照してください 。
void QTextCursor::insertBlock(const QTextBlockFormat &format)
カーソル位置に、ブロック形式 `format `、ブロック文字形式として現在の `charFormat()` を持つ新しい空のブロックを挿入します(position())。
これはオーバーロードされた関数です。
setBlockFormat()も参照してください 。
void QTextCursor::insertBlock(const QTextBlockFormat &format, const QTextCharFormat &charFormat)
カーソル位置position()に、ブロック形式format 、ブロック文字形式charFormat を持つ新しい空のブロックを挿入します。
これはオーバーロードされた関数です。
setBlockFormat()も参照してください 。
void QTextCursor::insertFragment(const QTextDocumentFragment &fragment)
現在のposition()の位置に、「fragment 」というテキストを挿入します。
QTextFrame *QTextCursor::insertFrame(const QTextFrameFormat &format)
指定されたformat を持つフレームを、現在のカーソル位置position()に挿入し、カーソルをposition()でフレーム内に移動させ、そのフレームを返します。
カーソルに選択範囲が設定されている場合、その選択範囲全体がフレーム内に移動されます。
hasSelection()も参照してください 。
void QTextCursor::insertHtml(const QString &html)
現在のposition()の位置に、「html 」というテキストを挿入します。このテキストはHTMLとして解釈されます。
注: この関数をスタイルシートと併用する場合 、スタイルシートはドキュメント内の現在のブロックにのみ適用されます。ドキュメント全体にスタイルシートを適用するには、代わりにQTextDocument::setDefaultStyleSheet()を使用してください。
void QTextCursor::insertImage(const QTextImageFormat &format)
format で定義された画像を、現在の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())
現在のposition()の位置に、指定されたimage と、オプションでname を挿入するための便利な関数です。
これはオーバーロードされた関数です。
void QTextCursor::insertImage(const QTextImageFormat &format, QTextFrameFormat::Position alignment)
指定されたformat で定義された画像を、指定されたalignment を使用して、カーソルの現在の位置に挿入します。
これはオーバーロードされた関数です。
position()も参照してください 。
QTextList *QTextCursor::insertList(const QTextListFormat &format)
現在の位置に新しいブロックを挿入し、それを指定されたformat を持つ新しく作成されたリストの最初のリスト項目とします。作成されたリストを返します。
currentList()、createList()、およびinsertBlock()も参照してください 。
QTextList *QTextCursor::insertList(QTextListFormat::Style style)
現在の位置に新しいブロックを挿入し、それを指定されたstyle を持つ新しく作成されたリストの最初のリスト項目とします。作成されたリストを返します。
これはオーバーロードされた関数です。
currentList()、createList()、およびinsertBlock()も参照してください 。
[since 6.4] void QTextCursor::insertMarkdown(const QString &markdown, QTextDocument::MarkdownFeatures features = QTextDocument::MarkdownDialectGitHub)
現在のposition()の位置に、指定されたMarkdownfeatures で書かれたmarkdown テキストを挿入します。デフォルトはGitHubダイアレクトです。
この関数は Qt 6.4 で導入されました。
QTextTable *QTextCursor::insertTable(int rows, int columns, const QTextTableFormat &format)
指定されたformat 内に、指定された数のrows およびcolumns を含む新しいテーブルを作成し、ドキュメント内の現在のカーソルposition()の位置に挿入して、テーブルオブジェクトを返します。カーソルは最初のセルの先頭に移動します。
テーブルには、少なくとも1行と1列が存在する必要があります。
currentTable()も参照してください 。
QTextTable *QTextCursor::insertTable(int rows, int columns)
指定されたrows およびcolumns の数を持つ新しい表を作成し、ドキュメント内の現在のカーソル位置position()に挿入して、表オブジェクトを返します。カーソルは最初のセルの先頭に移動します。
テーブルには、少なくとも1行と1列が含まれている必要があります。
これはオーバーロードされた関数です。
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() の呼び出しに対応する Unicode ブロック区切り文字に変換されます。
charFormat() およびhasSelection()も参照してください 。
void QTextCursor::insertText(const QString &text, const QTextCharFormat &format)
指定されたformat を用いて、現在の位置にtext を挿入します。
これはオーバーロードされた関数です。
bool QTextCursor::isCopyOf(const QTextCursor &other) const
このカーソルと `other ` が互いにコピー関係にある場合、つまり、一方が他方のコピーとして作成され、それ以来どちらも移動していない場合に、true を返します。これは等価性よりもはるかに厳格な条件です。
operator=() およびoperator==()も参照してください 。
bool QTextCursor::isNull() const
カーソルがnullの場合はtrue を返し、それ以外の場合はfalse を返します。nullのカーソルは、デフォルトコンストラクタによって作成されます。
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() を呼び出すと、3 つの挿入操作すべてが元に戻されます。
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)
カーソルの現在の文字書式を、formatmodifier で指定されたプロパティと統合します。カーソルに選択範囲がある場合、この関数はmodifier で設定されたすべてのプロパティを、選択範囲に含まれるすべての文字書式に適用します。
hasSelection() およびsetCharFormat()も参照してください 。
bool QTextCursor::movePosition(QTextCursor::MoveOperation operation, QTextCursor::MoveMode mode = MoveAnchor, int n = 1)
指定されたoperation をn 回実行し、指定されたmode を使用してカーソルを移動させ、すべての操作が正常に完了した場合はtrue を返し、そうでない場合はfalse を返します。
たとえば、この関数を繰り返し使用して次の単語の末尾にシークした場合、ドキュメントの末尾に到達すると最終的に失敗します。
デフォルトでは、移動操作は 1 回だけ実行されます (n = 1)。
mode がKeepAnchor の場合、カーソルは移動先のテキストを選択します。これは、ユーザーが Shift キーを押したままカーソルキーでカーソルを移動させた場合と同じ効果です。
setVisualNavigation()も参照してください 。
int QTextCursor::position() const
ドキュメント内のカーソルの絶対位置を返します。カーソルは文字と文字の間に位置しています。
注: この場合の「文字」とは 、QChar オブジェクトの文字列、すなわち16ビットのUnicode文字を指し、位置はこの文字列に対するインデックスとみなされます。 1つのグラフェムが、サロゲートペア、言語的合字、発音区別符号などの場合のように、複数のUnicode文字で表されることがあるため、これは必ずしもその文字体系における個々のグラフェムに対応するとは限りません。
setPosition()、movePosition()、anchor()、およびpositionInBlock()も参照してください 。
int QTextCursor::positionInBlock() const
ブロック内のカーソルの相対位置を返します。カーソルは文字と文字の間に位置しています。
これは、position() - block().position() と同等です。
注: この場合の「文字」とは 、QChar オブジェクトの文字列、すなわち 16 ビットの Unicode 文字を指し、位置はこの文字列に対するインデックスとみなされます。 1つのグラフェムが、サロゲートペア、言語的な合字、発音区別符号などの場合のように、複数のUnicode文字で表されることがあるため、これは必ずしもその文字体系における個々のグラフェムに対応するとは限りません。
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()` を使用してください。
注: エディタから取得した選択範囲が改行をまたぐ場合 、テキストには改行文字(\n )の代わりに、Unicode U+2029 の段落区切り文字が含まれます。これらの文字を改行文字に置き換えるには、QString::replace() を使用してください。
QTextDocumentFragment QTextCursor::selection() const
現在の選択範囲(空の場合もあります)と、そのすべての書式情報を返します。選択されたテキスト(つまりプレーンテキスト)のみが必要な場合は、代わりに `selectedText()` を使用してください。
注: QTextDocumentFragment::toPlainText()とは異なり 、selectedText()には、QChar::ParagraphSeparator などの特殊なUnicode文字が含まれる場合があります。
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)
m で指定されたMoveMode を使用して、pos で指定されたドキュメント内の絶対位置にカーソルを移動します。カーソルは文字と文字の間に位置します。
注: この場合の「文字」とは 、QChar オブジェクトの文字列、すなわち 16 ビットの Unicode 文字を指し、pos はこの文字列に対するインデックスとみなされます。 これは、記述体系における個々のグラフェムに必ずしも対応するわけではありません。なぜなら、1つのグラフェムが、サロゲートペア、言語的合字、または発音区別符号の場合のように、複数の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()も参照してください 。
[noexcept] void QTextCursor::swap(QTextCursor &other)
このテキストカーソルインスタンスをother と入れ替えます。この操作は非常に高速で、失敗することはありません。
int QTextCursor::verticalMovementX() const
垂直方向のカーソル移動における視覚的な x 座標を返します。
値が -1 の場合は、事前定義された x 座標がないことを示します。その場合、次にカーソルが上下に動いた際に自動的に設定されます。
setVerticalMovementX()も参照してください 。
bool QTextCursor::visualNavigation() const
カーソルが視覚ナビゲーションを行う場合は `true ` を返し、そうでない場合は `false` を返します。
視覚的ナビゲーションとは、非表示のテキスト段落をスキップすることを意味します。デフォルトは false です。
setVisualNavigation() およびmovePosition()も参照してください 。
bool QTextCursor::operator!=(const QTextCursor &other) const
other カーソルが、このカーソルとは異なるドキュメント内の位置にある場合はtrue を返し、そうでない場合はfalse を返します。
bool QTextCursor::operator<(const QTextCursor &other) const
other カーソルが、このカーソルよりもドキュメント内の後方に位置している場合は、true を返します。それ以外の場合は、false を返します。
bool QTextCursor::operator<=(const QTextCursor &other) const
other カーソルが、このカーソルと同じ位置かそれより後の位置に配置されている場合は、true を返します。それ以外の場合はfalseを返します。
QTextCursor &QTextCursor::operator=(const QTextCursor &cursor)
cursor のコピーを作成し、それをこのQTextCursor に代入します。なお、QTextCursor は暗黙的に共有されるクラスであることに注意してください。
bool QTextCursor::operator==(const QTextCursor &other) const
other カーソルが、このカーソルと同じドキュメント内の位置にある場合は `true ` を返し、そうでない場合は `false` を返します。
bool QTextCursor::operator>(const QTextCursor &other) const
other カーソルがこのカーソルよりも文書の先方に位置している場合は `true ` を返し、そうでない場合は `false` を返します。
bool QTextCursor::operator>=(const QTextCursor &other) const
other カーソルの位置が、このカーソルよりも前の位置にあるか、同じ位置にある場合はtrue を返し、それ以外の場合はfalseを返します。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.