이 페이지에서

일반적인 리치 텍스트 편집 작업

개발자가 Qt를 사용하여 텍스트 문서를 편집하고 처리할 때 자주 수행하는 작업이 여러 가지 있습니다. 여기에는 QTextBrowser 및 QTextEdit 와 같은 표시 위젯의 사용, 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 는 ` print()` 함수를 제공하여 ` QPrinter ` 클래스를 사용해 문서를 인쇄할 수 있게 합니다. 다음 코드는 ` 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() 함수를 사용하여 문서를 서식 지정하고 인쇄합니다.

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