일반적인 서식 있는 텍스트 편집 작업

개발자가 Qt를 사용하여 텍스트 문서를 편집하고 처리할 때 자주 수행하는 작업은 여러 가지가 있습니다. 여기에는 QTextBrowserQTextEdit 과 같은 디스플레이 위젯 사용, QTextDocument 을 사용한 문서 생성, QTextCursor 을 사용한 편집, 문서 구조 내보내기 등이 포함됩니다. 이 문서에서는 서식 있는 텍스트 클래스를 사용하여 이러한 작업을 수행하는 몇 가지 일반적인 방법을 설명하며, 여러분의 애플리케이션에서 재사용할 수 있는 편리한 패턴을 보여줍니다.

QTextEdit 사용하기

다음과 같은 방법으로 텍스트 편집기 위젯을 구성하여 HTML을 표시하는 데 사용할 수 있습니다:

QTextEdit *editor = new QTextEdit(parent);
editor->setHtml(aStringContainingHTMLtext);
editor->show();

기본적으로 텍스트 편집기에는 루트 프레임이 있는 문서가 포함되어 있으며 그 안에는 빈 텍스트 블록이 있습니다. 이 문서는 애플리케이션에서 직접 수정할 수 있도록 가져올 수 있습니다:

QTextDocument *document = editor->document();

텍스트 편집기의 커서를 사용하여 문서를 편집할 수도 있습니다:

QTextCursor cursor = editor->textCursor();

한 번에 여러 커서를 사용하여 문서를 편집할 수 있지만 QTextEdit 에는 한 번에 하나의 커서만 표시됩니다. 따라서 특정 커서 또는 선택 항목을 표시하도록 편집기를 업데이트하려면 문서를 수정한 후 편집기의 커서를 설정해야 합니다:

editor->setTextCursor(cursor);

텍스트 선택

텍스트 편집기에서 사용자가 수행하는 것과 유사한 작업을 사용하여 커서를 이동하면 텍스트가 선택됩니다. 문서에서 두 지점 사이의 텍스트를 선택하려면 첫 번째 지점에 커서를 놓은 다음 특수 모드(QTextCursor::MoveMode)와 이동 작업(QTextCursor::MoveOperation)을 사용하여 커서를 이동해야 합니다. 텍스트를 선택하면 사용자가 Shift 키를 누른 상태에서 텍스트를 선택할 때와 마찬가지로 선택 앵커를 이전 커서 위치에 그대로 둡니다:

    cursor.movePosition(QTextCursor::StartOfWord);
    cursor.movePosition(QTextCursor::EndOfWord, QTextCursor::KeepAnchor);

위 코드에서는 이 방법을 사용하여 전체 단어를 선택했습니다. QTextCursor 에서는 개별 문자, 단어, 줄 및 전체 블록을 선택하기 위한 여러 가지 일반적인 이동 작업을 제공합니다.

텍스트 찾기

QTextDocument 는 검색을 위한 커서 기반 인터페이스를 제공하여 텍스트 편집기 스타일로 텍스트를 쉽게 찾고 수정할 수 있습니다. 다음 코드는 문서에서 특정 단어의 모든 인스턴스를 찾고 각 단어의 색상을 변경합니다:

    QTextCursor newCursor(document);

    while (!newCursor.isNull() && !newCursor.atEnd()) {
        newCursor = document->find(searchString, newCursor);

        if (!newCursor.isNull()) {
            newCursor.movePosition(QTextCursor::WordRight,
                                   QTextCursor::KeepAnchor);

            newCursor.mergeCharFormat(colorFormat);
        }
    }

검색 및 바꾸기 작업을 할 때마다 커서를 이동할 필요 없이 항상 방금 바꾼 단어의 끝에 커서가 위치한다는 점에 유의하세요.

문서 인쇄

QTextEdit 은 화면에서 읽을 수 있는 큰 서식 있는 텍스트 문서를 표시하도록 설계되어 웹 브라우저와 동일한 방식으로 렌더링합니다. 따라서 문서의 내용을 인쇄에 적합한 페이지 크기로 자동 분할하지 않습니다.

QTextDocument QPrinter 클래스를 사용하여 문서를 인쇄할 수 있도록 print() 함수를 제공합니다. 다음 코드는 QTextEdit 에서 QPrinter 으로 인쇄할 수 있도록 문서를 준비하는 방법을 보여줍니다:

    QTextDocument *document = editor->document();
    QPrinter printer;

    QPrintDialog *dlg = new QPrintDialog(&printer, this);
    if (dlg->exec() != QDialog::Accepted)
        return;

    document->print(&printer);

텍스트 편집기에서 문서를 가져와 QPrinter 을 구성한 다음 QPrintDialog 을 사용하여 구성합니다. 사용자가 프린터의 구성을 수락하면 print() 함수를 사용하여 문서를 포맷하고 인쇄합니다.

© 2025 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.