QAbstractTextDocumentLayout Class
QAbstractTextDocumentLayout 클래스는 QTextDocument의 사용자 정의 레이아웃을 구현하는 데 사용되는 추상 베이스 클래스입니다. 더 보기...
Header: | #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) |
Signals
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을 서브 클래싱하여 텍스트 문서에 대한 사용자 정의 레이아웃 동작을 제공할 수 있습니다.
setDocumentLayout() 함수를 사용하여 QAbstractTextDocumentLayout 서브클래스의 인스턴스를 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)
주어진 context 을 사용하여 주어진 painter 으로 레이아웃을 그립니다.
[virtual protected]
void QAbstractTextDocumentLayout::drawInlineObject(QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)
이 함수는 지정된 텍스트 format 를 사용하여 rect 로 지정된 사각형 내에 지정된 painter 을 가진 인라인 객체 object 를 그리기 위해 호출됩니다.
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 의 서브클래스는 다시 칠하기 위해 콘텐츠의 레이아웃이 변경될 때 이 신호를 발생시켜야 합니다.
[signal]
void QAbstractTextDocumentLayout::updateBlock(const QTextBlock &block)
이 신호는 지정된 block 이 업데이트되었을 때 발생합니다.
QAbstractTextDocumentLayout 의 서브클래스는 block 의 레이아웃이 변경되었을 때 다시 칠하기 위해 이 신호를 발생시켜야 합니다.
© 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.