CopperSpice API  1.9.2
QAbstractTextDocumentLayout Class Referenceabstract

An abstract base class used to implement custom layouts for QTextDocument. More...

Inheritance diagram for QAbstractTextDocumentLayout:
QObject QPlainTextDocumentLayout

Classes

class  PaintContext
 A nested class which defines the parameters used when painting a document layout More...
 
class  Selection
 A nested class which defines the parameters of a document selection More...
 

Public Signals

void documentSizeChanged (const QSizeF &newSize)
 
void pageCountChanged (int newPages)
 
void update (const QRectF &rect=QRectF (0.0, 0.0, 1000000000.0, 1000000000.0))
 
void updateBlock (const QTextBlock &block)
 
- Public Signals inherited from QObject
void destroyed (QObject *obj=nullptr)
 
void objectNameChanged (const QString &objectName)
 

Public Methods

 QAbstractTextDocumentLayout (QTextDocument *doc)
 
QString anchorAt (const QPointF &pos) const
 
virtual QRectF blockBoundingRect (const QTextBlock &block) const = 0
 
QTextDocumentdocument () const
 
virtual QSizeF documentSize () const = 0
 
virtual void draw (QPainter *painter, const PaintContext &context) = 0
 
virtual QRectF frameBoundingRect (QTextFrame *frame) const = 0
 
QTextObjectInterfacehandlerForObject (int objectType) const
 
virtual int hitTest (const QPointF &point, Qt::HitTestAccuracy accuracy) const = 0
 
virtual int pageCount () const = 0
 
QPaintDevicepaintDevice () const
 
void registerHandler (int objectType, QObject *component)
 
void setPaintDevice (QPaintDevice *device)
 
void unregisterHandler (int objectType, QObject *component=nullptr)
 
- Public Methods inherited from QObject
 QObject (QObject *parent=nullptr)
 
 ~QObject ()
 
bool blockSignals (bool block)
 
const QList< QObject * > & children () const
 
bool connect (const QObject *sender, const QString &signalMethod, const QString &location, const QString &slotMethod, Qt::ConnectionType type=Qt::AutoConnection)
 
bool connect (const QObject *sender, const QString &signalMethod, const QString &slotMethod, Qt::ConnectionType type=Qt::AutoConnection)
 
bool disconnect (const QObject *receiver, const QString &slotMethod=QString ()) const
 
bool disconnect (const QString &signalMethod, const QString &location, const QObject *receiver=nullptr, const QString &slotMethod=QString ()) const
 
bool disconnect (const QString &signalMethod=QString (), const QObject *receiver=nullptr, const QString &slotMethod=QString ()) const
 
void dumpObjectInfo ()
 
void dumpObjectTree ()
 
QList< QStringdynamicPropertyNames () const
 
virtual bool event (QEvent *event)
 
virtual bool eventFilter (QObject *watched, QEvent *event)
 
template<typename T >
findChild (const QString &childName=QString ()) const
 
template<class T >
QList< T > findChildren (const QRegularExpression &regExp, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 
template<class T >
QList< T > findChildren (const QString &childName=QString (), Qt::FindChildOptions options=Qt::FindChildrenRecursively) const
 
bool inherits (const QString &className) const
 
void installEventFilter (QObject *filterObj)
 
bool isWidgetType () const
 
bool isWindowType () const
 
void killTimer (int id)
 
const QMetaObjectmetaObject () const
 
void moveToThread (QThread *targetThread)
 
QString objectName () const
 
QObject * parent () const
 
template<class T = QVariant>
property (const QString &name) const
 
void removeEventFilter (QObject *obj)
 
void setObjectName (const QString &name)
 
void setParent (QObject *parent)
 
bool setProperty (const QString &name, const QVariant &value)
 
bool signalsBlocked () const
 
int startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer)
 
QThreadthread () const
 

Protected Methods

virtual void documentChanged (int pos, int charsRemoved, int charsAdded) = 0
 
virtual void drawInlineObject (QPainter *painter, const QRectF &rect, QTextInlineObject object, int posInDocument, const QTextFormat &format)
 
QTextCharFormat format (int pos)
 
virtual void positionInlineObject (QTextInlineObject item, int posInDocument, const QTextFormat &format)
 
virtual void resizeInlineObject (QTextInlineObject item, int posInDocument, const QTextFormat &format)
 
- Protected Methods inherited from QObject
virtual void childEvent (QChildEvent *event)
 
virtual void connectNotify (const QMetaMethod &signalMethod) const
 
virtual void customEvent (QEvent *event)
 
virtual void disconnectNotify (const QMetaMethod &signalMethod) const
 
bool isSignalConnected (const QMetaMethod &signalMethod) const
 
int receivers (const QString &signal) const
 
QObject * sender () const
 
int senderSignalIndex () const
 
virtual void timerEvent (QTimerEvent *event)
 

Friends

class QTextDocument
 
class QTextLayout
 
class QTextLine
 

Additional Inherited Members

- Public Slots inherited from QObject
void deleteLater ()
 
- Static Public Methods inherited from QObject
static bool connect (const QObject *sender, const QMetaMethod &signalMethod, const QObject *receiver, const QMetaMethod &slotMethod, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool connect (const QObject *sender, const QString &signalMethod, const QObject *receiver, const QString &slotMethod, Qt::ConnectionType type=Qt::AutoConnection, const QString &location=QString ())
 
static bool connect (const QObject *sender, const QString &signalMethod, const QString &location, const QObject *receiver, const QString &slotMethod, Qt::ConnectionType type=Qt::AutoConnection)
 
template<class Sender , class SignalClass , class... SignalArgs, class Receiver , class SlotClass , class... SlotArgs, class SlotReturn >
static bool connect (const Sender *sender, void (SignalClass::*signalMethod)(SignalArgs...), const Receiver *receiver, SlotReturn (SlotClass::*slotMethod)(SlotArgs...), Qt::ConnectionType type=Qt::AutoConnection)
 
template<class Sender , class SignalClass , class... SignalArgs, class Receiver , class T >
static bool connect (const Sender *sender, void (SignalClass::*signalMethod)(SignalArgs...), const Receiver *receiver, T slotLambda, Qt::ConnectionType type=Qt::AutoConnection)
 
static bool disconnect (const QObject *sender, const QMetaMethod &signalMethod, const QObject *receiver, const QMetaMethod &slotMethod)
 
static bool disconnect (const QObject *sender, const QString &signalMethod, const QObject *receiver, const QString &slotMethod)
 
static bool disconnect (const QObject *sender, const QString &signalMethod, const QString &location, const QObject *receiver, const QString &slotMethod)
 
static bool disconnect (const QObject *sender, std::nullptr_t, const QObject *receiver, std::nullptr_t)
 
template<class Sender , class SignalClass , class... SignalArgs, class Receiver , class SlotClass , class... SlotArgs, class SlotReturn >
static bool disconnect (const Sender *sender, void (SignalClass::*signalMethod)(SignalArgs...), const Receiver *receiver, SlotReturn (SlotClass::*slotMethod)(SlotArgs...))
 
template<class Sender , class SignalClass , class... SignalArgs, class Receiver >
static bool disconnect (const Sender *sender, void (SignalClass::*signalMethod)(SignalArgs...), const Receiver *receiver, std::nullptr_t slotMethod=nullptr)
 
template<class Sender , class SignalClass , class... SignalArgs, class Receiver , class T >
static bool disconnect (const Sender *sender, void (SignalClass::*signalMethod)(SignalArgs...), const Receiver *receiver, T slotMethod)
 
static QMetaObjectstaticMetaObject ()
 
static QString tr (const char *text, const char *comment=nullptr, std::optional< int > numArg=std::optional< int >())
 
- Properties inherited from QObject
 objectName
 

Detailed Description

The QAbstractTextDocumentLayout class is an abstract base class used to implement custom layouts for QTextDocuments. The standard layout provided by CopperSpice can handle simple word processing including inline images, lists and tables.

Some applications, like a word processor or a DTP application, might need more features than the ones provided by the CopperSpice layout engine. In this case you can subclass QAbstractTextDocumentLayout to provide custom layout behavior for your text documents.

An instance of the QAbstractTextDocumentLayout subclass can be installed on a QTextDocument object with the setDocumentLayout() function. You can insert custom objects into a QTextDocument. Refer to the QTextObjectInterface class description for details.

See also
QTextObjectInterface

Constructor & Destructor Documentation

QAbstractTextDocumentLayout::QAbstractTextDocumentLayout ( QTextDocument doc)
explicit

Constructs a new text document layout for the given doc.

Method Documentation

QString QAbstractTextDocumentLayout::anchorAt ( const QPointF pos) const

Returns the reference of the anchor the given pos, or an empty string if no anchor exists at that point.

QRectF QAbstractTextDocumentLayout::blockBoundingRect ( const QTextBlock block) const
pure virtual

Returns the bounding rectangle of block.

Implemented in QPlainTextDocumentLayout::blockBoundingRect()

QTextDocument * QAbstractTextDocumentLayout::document ( ) const

Returns the text document that this layout is operating on.

void QAbstractTextDocumentLayout::documentChanged ( int  pos,
int  charsRemoved,
int  charsAdded 
)
protectedpure virtual

This method is called whenever the contents of the document change. A change occurs when text is inserted, removed, or a combination of these two. The change is specified by position, charsRemoved, and charsAdded corresponding to the starting character position of the change, the number of characters removed from the document, and the number of characters added.

When inserting the text "Hello" into an empty document, charsRemoved would be 0 and charsAdded would be 5 (the length of the string). Replacing text is a combination of removing and inserting. If the text "Hello" gets replaced by "Hi", charsRemoved would be 5 and charsAdded would be 2.

For subclasses of QAbstractTextDocumentLayout, this is the central function where a large portion of the work to lay out and position document contents is done.

For example, in a subclass that only arranges blocks of text, an implementation of this function would have to do the following:

  • Determine the list of changed QTextBlock(s) using the parameters provided.
  • Each QTextBlock object's corresponding QTextLayout object needs to be processed. You can access the QTextBlock's layout using the QTextBlock::layout() function. This processing should take the document's page size into consideration.
  • If the total number of pages changed, the pageCountChanged() signal should be emitted.
  • If the total size changed, the documentSizeChanged() signal should be emitted.
  • The update() signal should be emitted to schedule a repaint of areas in the layout that require repainting.
See also
QTextLayout

Implemented in QPlainTextDocumentLayout::documentChanged()

QSizeF QAbstractTextDocumentLayout::documentSize ( ) const
pure virtual

Returns the total size of the document's layout.

This information can be used by display widgets to update their scroll bars correctly.

See also
documentSizeChanged(), QTextDocument::pageSize

Implemented in QPlainTextDocumentLayout::documentSize()

void QAbstractTextDocumentLayout::documentSizeChanged ( const QSizeF newSize)
signal

This signal is emitted when the size of the document layout changes to newSize.

Subclasses of QAbstractTextDocumentLayout should emit this signal when the document's entire layout size changes. This signal is useful for widgets that display text documents since it enables them to update their scroll bars correctly.

See also
documentSize()
void QAbstractTextDocumentLayout::draw ( QPainter painter,
const PaintContext context 
)
pure virtual

Draws the layout with the given painter using the given context.

void QAbstractTextDocumentLayout::drawInlineObject ( QPainter painter,
const QRectF rect,
QTextInlineObject  object,
int  posInDocument,
const QTextFormat format 
)
protectedvirtual

This function is called to draw the inline object, object, with the given painter within the rectangle specified by rect using the specified text format.

posInDocument specifies the position of the object within the document.

The default implementation calls drawObject() on the object handlers. This function is called internally. Subclasses can reimplement this function to customize the drawing of inline objects.

See also
draw()
QTextCharFormat QAbstractTextDocumentLayout::format ( int  pos)
protected

Returns the character format that is applicable at the given pos.

QRectF QAbstractTextDocumentLayout::frameBoundingRect ( QTextFrame frame) const
pure virtual

Returns the bounding rectangle of frame.

Implemented in QPlainTextDocumentLayout::frameBoundingRect()

QTextObjectInterface * QAbstractTextDocumentLayout::handlerForObject ( int  objectType) const

Returns a handler for objects of the given objectType.

int QAbstractTextDocumentLayout::hitTest ( const QPointF point,
Qt::HitTestAccuracy  accuracy 
) const
pure virtual

Returns the cursor position for the given point with the specified accuracy. Returns -1 if no valid cursor position was found.

Implemented in QPlainTextDocumentLayout::hitTest()

int QAbstractTextDocumentLayout::pageCount ( ) const
pure virtual

Returns the number of pages contained in the layout.

See also
pageCountChanged()

Implemented in QPlainTextDocumentLayout::pageCount()

void QAbstractTextDocumentLayout::pageCountChanged ( int  newPages)
signal

This signal is emitted when the number of pages in the layout changes; newPages is the updated page count.

Subclasses of QAbstractTextDocumentLayout should emit this signal when the number of pages in the layout has changed. Changes to the page count are caused by changes to the layout or the document content itself.

See also
pageCount()
QPaintDevice * QAbstractTextDocumentLayout::paintDevice ( ) const

Returns the paint device used to render the document's layout.

See also
setPaintDevice()
void QAbstractTextDocumentLayout::positionInlineObject ( QTextInlineObject  item,
int  posInDocument,
const QTextFormat format 
)
protectedvirtual

Lays out the inline object item using the given text format.

posInDocument specifies the position of the object within the document.

The default implementation does nothing. This function is called internally. Subclasses can reimplement this function to customize the position of inline objects.

See also
drawInlineObject()
void QAbstractTextDocumentLayout::registerHandler ( int  objectType,
QObject component 
)

Registers the given component as a handler for items of the given objectType.

Note
registerHandler() has to be called once for each object type. This means that there is only one handler for multiple replacement characters of the same object type.
void QAbstractTextDocumentLayout::resizeInlineObject ( QTextInlineObject  item,
int  posInDocument,
const QTextFormat format 
)
protectedvirtual

Sets the size of the inline object item corresponding to the text format.

posInDocument specifies the position of the object within the document.

The default implementation resizes the item to the size returned by the object handler's intrinsicSize() function. This function is called internally. Subclasses can reimplement this function to customize the resizing of inline objects.

void QAbstractTextDocumentLayout::setPaintDevice ( QPaintDevice device)

Sets the paint device used for rendering the document's layout to the given device.

See also
paintDevice()
void QAbstractTextDocumentLayout::unregisterHandler ( int  objectType,
QObject component = nullptr 
)

Unregisters the given component as handler for items of the given objectType. Unregisters all handlers if the component is a nullptr.

void QAbstractTextDocumentLayout::update ( const QRectF rect = QRectF(0.0, 0.0, 1000000000.0, 1000000000.0))
signal

This signal is emitted when the rectangle rect has been updated. Subclasses of QAbstractTextDocumentLayout should emit this signal when the layout of the contents change in order to repaint.

void QAbstractTextDocumentLayout::updateBlock ( const QTextBlock block)
signal

This signal is emitted when the specified block has been updated. Subclasses of QAbstractTextDocumentLayout should emit this signal when the layout of block has changed in order to repaint.