QAbstractTextDocumentLayout Class
QAbstractTextDocumentLayout 클래스는 QTextDocument에 대한 사용자 정의 레이아웃을 구현하는 데 사용되는 추상 기본 클래스입니다. 더 보기...
| 헤더: | #include <QAbstractTextDocumentLayout> |
| CMake: | find_package(Qt6 REQUIRED COMPONENTS Gui) target_link_libraries(mytarget PRIVATE Qt6::Gui) |
| qmake: | QT += gui |
| 상속: | QObject |
| 상속받는 클래스: |
- 상속받은 멤버를 포함한 모든 멤버 목록
- QAbstractTextDocumentLayout은 리치 텍스트 처리 API의 일부입니다.
참고: 이 클래스의 모든 함수는 재진입 가능합니다.
공개 유형
| struct | PaintContext |
| struct | Selection |
공개 함수
| QAbstractTextDocumentLayout(QTextDocument *document) | |
| QString | anchorAt(const QPointF &position) const |
| virtual QRectF | blockBoundingRect(const QTextBlock &block) const = 0 |
| QTextBlock | blockWithMarkerAt(const QPointF &pos) const |
| QTextDocument * | document() const |
| virtual QSizeF | documentSize() const = 0 |
| virtual void | draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context) = 0 |
| QTextFormat | formatAt(const QPointF &pos) const |
| virtual QRectF | frameBoundingRect(QTextFrame *frame) const = 0 |
| QTextObjectInterface * | handlerForObject(int objectType) const |
| virtual int | hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const = 0 |
| QString | imageAt(const QPointF &pos) const |
| virtual int | pageCount() const = 0 |
| QPaintDevice * | paintDevice() const |
| void | registerHandler(int objectType, QObject *component) |
| void | setPaintDevice(QPaintDevice *device) |
| void | unregisterHandler(int objectType, QObject *component = nullptr) |
신호
| void | documentSizeChanged(const QSizeF &newSize) |
| void | pageCountChanged(int newPages) |
| void | update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.)) |
| void | updateBlock(const QTextBlock &block) |
보호된 함수
| virtual void | documentChanged(int position, int charsRemoved, int charsAdded) = 0 |
| virtual void | drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format) |
| QTextCharFormat | format(int position) |
| virtual void | positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format) |
| virtual void | resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format) |
상세 설명
Qt에서 제공하는 표준 레이아웃은 인라인 이미지, 목록 및 표를 포함한 간단한 워드 프로세싱을 처리할 수 있습니다.
워드 프로세서나 DTP 애플리케이션과 같은 일부 애플리케이션은 Qt의 레이아웃 엔진이 제공하는 기능보다 더 많은 기능이 필요할 수 있습니다. 이 경우 QAbstractTextDocumentLayout의 서브클래스를 만들어 텍스트 문서에 대한 사용자 정의 레이아웃 동작을 제공할 수 있습니다.
QAbstractTextDocumentLayout 서브클래스의 인스턴스는 setDocumentLayout() 함수를 사용하여 QTextDocument 객체에 설치할 수 있습니다.
QTextDocument 에 사용자 정의 객체를 삽입할 수 있습니다. 자세한 내용은 QTextObjectInterface 클래스 설명을 참조하십시오.
QTextObjectInterface도 참조하십시오 .
멤버 함수 설명서
[explicit] QAbstractTextDocumentLayout::QAbstractTextDocumentLayout(QTextDocument *document)
지정된 ` document`에 대한 새로운 텍스트 문서 레이아웃을 생성합니다.
QString QAbstractTextDocumentLayout::anchorAt(const QPointF &position) const
지정된 ` position`에 해당하는 앵커의 참조를 반환하며, 해당 위치에 앵커가 없는 경우에는 빈 문자열을 반환합니다.
[pure virtual] QRectF QAbstractTextDocumentLayout::blockBoundingRect(const QTextBlock &block) const
block 의 경계 사각형을 반환합니다.
QTextBlock QAbstractTextDocumentLayout::blockWithMarkerAt(const QPointF &pos) const
주어진 위치 pos 에서 ` marker `가 발견되는 블록(대개 리스트 항목)을 반환합니다.
QTextDocument *QAbstractTextDocumentLayout::document() const
이 레이아웃이 처리 중인 텍스트 문서를 반환합니다.
[pure virtual protected] void QAbstractTextDocumentLayout::documentChanged(int position, int charsRemoved, int charsAdded)
이 함수는 문서의 내용이 변경될 때마다 호출됩니다. 변경은 텍스트가 삽입되거나 삭제되거나, 또는 이 두 가지가 조합될 때 발생합니다. 변경 사항은 변경의 시작 문자 위치, 문서에서 삭제된 문자 수, 추가된 문자 수에 해당하는 position, charsRemoved, charsAdded 로 지정됩니다.
예를 들어, 빈 문서에 "Hello"라는 텍스트를 삽입할 경우, charsRemoved 는 0이 되고 charsAdded 는 5(문자열의 길이)가 됩니다.
텍스트를 바꾸는 작업은 제거와 삽입이 결합된 것입니다. 예를 들어, 텍스트 "Hello"가 "Hi"로 바뀐다면, charsRemoved 는 5가 되고 charsAdded 는 2가 됩니다.
QAbstractTextDocumentLayout 의 하위 클래스에서 이 함수는 문서 내용을 배치하고 위치를 조정하는 작업의 상당 부분이 수행되는 핵심 함수입니다.
예를 들어, 텍스트 블록만 배열하는 하위 클래스의 경우, 이 함수의 구현체는 다음 작업을 수행해야 합니다:
- 제공된 매개변수를 사용하여 변경된 QTextBlock 객체 목록을 파악합니다.
- 각 ` QTextBlock ` 객체에 해당하는 ` QTextLayout ` 객체를 처리해야 합니다. ` QTextBlock::layout()` 함수를 사용하여 ` QTextBlock`의 레이아웃에 접근할 수 있습니다. 이 처리 과정에서는 문서의 페이지 크기를 고려해야 합니다.
- 총 페이지 수가 변경된 경우, ` pageCountChanged()` 신호를 발산해야 합니다.
- 총 크기가 변경된 경우, documentSizeChanged() 신호를 발산해야 합니다.
- update() 신호를 방출하여 레이아웃 내에서 다시 그리기가 필요한 영역의 다시 그리기를 예약해야 합니다.
QTextLayout도 참조하십시오 .
[pure virtual] QSizeF QAbstractTextDocumentLayout::documentSize() const
문서의 레이아웃 전체 크기를 반환합니다.
이 정보는 디스플레이 위젯에서 스크롤 막대를 올바르게 업데이트하는 데 사용될 수 있습니다.
documentSizeChanged() 및 QTextDocument::pageSize도 참조하십시오 .
[signal] void QAbstractTextDocumentLayout::documentSizeChanged(const QSizeF &newSize)
이 신호는 문서 레이아웃의 크기가 ` newSize`로 변경될 때 발생합니다.
QAbstractTextDocumentLayout 의 하위 클래스는 문서의 전체 레이아웃 크기가 변경될 때 이 신호를 발생시켜야 합니다. 이 신호는 텍스트 문서를 표시하는 위젯이 스크롤 막대를 올바르게 업데이트할 수 있게 해주므로 유용합니다.
documentSize()도 참조하십시오 .
[pure virtual] void QAbstractTextDocumentLayout::draw(QPainter *painter, const QAbstractTextDocumentLayout::PaintContext &context)
지정된 ` painter `와 ` context`를 사용하여 레이아웃을 그립니다.
[virtual protected] void QAbstractTextDocumentLayout::drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)
이 함수는 지정된 painter 를 사용하여, rect 로 지정된 사각형 영역 내에 인라인 객체 object 를 지정된 텍스트 format 로 그리기 위해 호출됩니다.
posInDocument 문서 내에서 객체의 위치를 지정합니다.
기본 구현은 객체 핸들러에 대해 drawObject()를 호출합니다. 이 함수는 Qt 내에서만 호출됩니다. 하위 클래스는 이 함수를 재구현하여 인라인 객체의 그리기 방식을 사용자 정의할 수 있습니다.
draw()도 참조하십시오 .
[protected] QTextCharFormat QAbstractTextDocumentLayout::format(int position)
지정된 position 에서 적용 가능한 문자 형식을 반환합니다.
QTextFormat QAbstractTextDocumentLayout::formatAt(const QPointF &pos) const
지정된 위치 pos 의 텍스트 형식을 반환합니다.
[pure virtual] QRectF QAbstractTextDocumentLayout::frameBoundingRect(QTextFrame *frame) const
frame 의 경계 사각형을 반환합니다.
QTextObjectInterface *QAbstractTextDocumentLayout::handlerForObject(int objectType) const
지정된 ` objectType`에 해당하는 객체에 대한 핸들러를 반환합니다.
[pure virtual] int QAbstractTextDocumentLayout::hitTest(const QPointF &point, Qt::HitTestAccuracy accuracy) const
지정된 ` point `에 대한 커서 위치를, 지정된 ` accuracy`와 함께 반환합니다. 유효한 커서 위치를 찾을 수 없는 경우 -1을 반환합니다.
QString QAbstractTextDocumentLayout::imageAt(const QPointF &pos) const
지정된 위치 pos 의 이미지 소스를 반환하며, 해당 위치에 이미지가 없는 경우에는 빈 문자열을 반환합니다.
[pure virtual] int QAbstractTextDocumentLayout::pageCount() const
레이아웃에 포함된 페이지 수를 반환합니다.
pageCountChanged()도 참조하십시오 .
[signal] void QAbstractTextDocumentLayout::pageCountChanged(int newPages)
이 신호는 레이아웃의 페이지 수가 변경될 때 발생하며, ` newPages `는 업데이트된 페이지 수를 나타냅니다.
QAbstractTextDocumentLayout 의 서브클래스는 레이아웃의 페이지 수가 변경되었을 때 이 신호를 발생시켜야 합니다. 페이지 수의 변경은 레이아웃이나 문서 내용 자체의 변경에 의해 발생합니다.
pageCount()도 참조하십시오 .
QPaintDevice *QAbstractTextDocumentLayout::paintDevice() const
문서의 레이아웃을 렌더링하는 데 사용되는 페인트 장치를 반환합니다.
setPaintDevice()도 참조하십시오 .
[virtual protected] void QAbstractTextDocumentLayout::positionInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
주어진 텍스트 format 를 사용하여 인라인 객체 item 를 배치합니다.
posInDocument 문서 내에서 객체의 위치를 지정합니다.
기본 구현은 아무 작업도 수행하지 않습니다. 이 함수는 Qt 내에서만 호출됩니다. 하위 클래스는 이 함수를 재구현하여 인라인 객체의 위치를 사용자 정의할 수 있습니다.
drawInlineObject()도 참조하십시오 .
void QAbstractTextDocumentLayout::registerHandler(int objectType, QObject *component)
지정된 ` component `를 지정된 ` objectType`의 항목에 대한 핸들러로 등록합니다.
참고: registerHandler ()는 각 객체 유형마다 한 번씩 호출되어야 합니다. 즉, 동일한 객체 유형에 속하는 여러 대체 문자에 대해 단 하나의 핸들러만 존재합니다.
텍스트 문서 레이아웃은 ` component`에 대한 소유권을 가지지 않습니다.
[virtual protected] void QAbstractTextDocumentLayout::resizeInlineObject(QTextInlineObject item, int posInDocument, const QTextFormat &format)
텍스트 format 에 해당하는 인라인 객체 item 의 크기를 설정합니다.
posInDocument 문서 내에서 객체의 위치를 지정합니다.
기본 구현에서는 item 의 크기를 객체 핸들러의 intrinsicSize() 함수가 반환하는 크기로 조정합니다. 이 함수는 Qt 내에서만 호출됩니다. 하위 클래스는 이 함수를 재구현하여 인라인 객체의 크기 조정을 사용자 정의할 수 있습니다.
void QAbstractTextDocumentLayout::setPaintDevice(QPaintDevice *device)
문서의 레이아웃을 렌더링하는 데 사용되는 페인트 장치를 지정된 device 로 설정합니다.
paintDevice()도 참조하십시오 .
void QAbstractTextDocumentLayout::unregisterHandler(int objectType, QObject *component = nullptr)
지정된 component 를, 지정된 objectType 의 항목에 대한 핸들러로 등록 해제하거나, component 가 지정되지 않은 경우 모든 핸들러를 등록 해제합니다.
[signal] void QAbstractTextDocumentLayout::update(const QRectF &rect = QRectF(0., 0., 1000000000., 1000000000.))
이 신호는 사각형 ` rect `이 업데이트되었을 때 발생합니다.
QAbstractTextDocumentLayout 의 하위 클래스는 재그리기(repaint)를 위해 내용의 레이아웃이 변경될 때 이 신호를 발생시켜야 합니다.
[signal] void QAbstractTextDocumentLayout::updateBlock(const QTextBlock &block)
이 신호는 지정된 ` block `이 업데이트되었을 때 발생합니다.
QAbstractTextDocumentLayout 의 서브클래스는 block 의 레이아웃이 변경되었을 때 다시 그리기(repaint)를 수행하기 위해 이 신호를 발생시켜야 합니다.
© 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.