KD Reports API Documentation 2.2
Loading...
Searching...
No Matches
KDReportsAbstractTableElement.cpp
Go to the documentation of this file.
1/****************************************************************************
2**
3** This file is part of the KD Reports library.
4**
5** SPDX-FileCopyrightText: 2007 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
6**
7** SPDX-License-Identifier: MIT
8**
9****************************************************************************/
10
13#include <QDebug>
14#include <QTextCursor>
15#include <QTextTableFormat>
16
17class KDReports::AbstractTableElementPrivate
18{
19public:
20 void fillConstraints(QTextTableFormat *tableFormat) const;
21
22 qreal m_border = 1.0;
23 QBrush m_borderBrush = QBrush(Qt::darkGray /*like Qt does*/);
24 qreal m_padding = 0.5;
25 qreal m_width = 0;
27 QFont m_defaultFont;
28 bool m_fontSpecified = false;
30};
31
32KDReports::AbstractTableElement::AbstractTableElement()
33 : Element()
34 , d(new AbstractTableElementPrivate)
35{
36}
37
38KDReports::AbstractTableElement::AbstractTableElement(const AbstractTableElement &other)
39 : Element(other)
40 , d(new AbstractTableElementPrivate(*other.d))
41{
42}
43
44KDReports::AbstractTableElement &KDReports::AbstractTableElement::operator=(const AbstractTableElement &other)
45{
46 if (&other == this)
47 return *this;
48 Element::operator=(other);
49 *d = *other.d;
50 return *this;
51}
52
53void KDReports::AbstractTableElement::setColumnConstraints(const QVector<KDReports::AbstractTableElement::ColumnConstraint> &constraints)
54{
55 d->m_constraints = constraints;
56}
57
58KDReports::AbstractTableElement::~AbstractTableElement()
59{
60}
61
62void KDReports::AbstractTableElement::setBorder(qreal border)
63{
64 d->m_border = border;
65}
66
67qreal KDReports::AbstractTableElement::border() const
68{
69 return d->m_border;
70}
71
72void KDReports::AbstractTableElement::setBorderBrush(const QBrush &brush)
73{
74 d->m_borderBrush = brush;
75}
76
77QBrush KDReports::AbstractTableElement::borderBrush() const
78{
79 return d->m_borderBrush;
80}
81
82void KDReports::AbstractTableElement::setPadding(qreal padding)
83{
84 d->m_padding = padding;
85}
86
87qreal KDReports::AbstractTableElement::padding() const
88{
89 return d->m_padding;
90}
91
92void KDReports::AbstractTableElement::setWidth(qreal width, Unit unit)
93{
94 d->m_width = width;
95 d->m_unit = unit;
96}
97
98qreal KDReports::AbstractTableElement::width() const
99{
100 return d->m_width;
101}
102
103KDReports::Unit KDReports::AbstractTableElement::unit() const
104{
105 return d->m_unit;
106}
107
108void KDReports::AbstractTableElement::setDefaultFont(const QFont &font)
109{
110 d->m_defaultFont = font;
111 d->m_fontSpecified = true;
112}
113
114QFont KDReports::AbstractTableElement::defaultFont(bool *isSet) const
115{
116 *isSet = d->m_fontSpecified;
117 return d->m_defaultFont;
118}
119
120void KDReports::AbstractTableElementPrivate::fillConstraints(QTextTableFormat *tableFormat) const
121{
122 if (!m_constraints.isEmpty()) {
123 QVector<QTextLength> constraints;
124 constraints.reserve(m_constraints.size());
125 for (const auto &c : m_constraints) {
126 QTextLength length; // Variable by default
127 switch (c.unit) {
128 case Millimeters:
130 break;
131 case Percent:
133 break;
134 }
135 constraints.append(length);
136 }
137 tableFormat->setColumnWidthConstraints(constraints);
138 }
139}
140
141void KDReports::AbstractTableElement::fillTableFormat(QTextTableFormat &tableFormat, QTextCursor &textDocCursor) const
142{
143 if (d->m_width) {
144 if (d->m_unit == Millimeters) {
145 tableFormat.setWidth(QTextLength(QTextLength::FixedLength, mmToPixels(d->m_width)));
146 } else {
147 tableFormat.setWidth(QTextLength(QTextLength::PercentageLength, d->m_width));
148 }
149 }
150
151 d->fillConstraints(&tableFormat);
152
153 tableFormat.setBorder(border());
154 tableFormat.setBorderBrush(borderBrush());
155 tableFormat.setCellPadding(mmToPixels(padding()));
156 tableFormat.setCellSpacing(0); // HTML-like table borders look so old century
157 if (d->m_fontSpecified) {
158 QTextCharFormat charFormat = textDocCursor.charFormat();
159 charFormat.setFont(d->m_defaultFont);
160 textDocCursor.setCharFormat(charFormat);
161 }
162}
Element & operator=(const Element &other)
@ Percent
Percentage of the text width, i.e. the page width minus margins.
@ Millimeters
Millimeters (the default)
KDREPORTS_EXPORT qreal mmToPixels(qreal mm)
darkGray
void setFont(const QFont &font, QTextCharFormat::FontPropertiesInheritanceBehavior behavior)
QTextCharFormat charFormat() const const
void setCharFormat(const QTextCharFormat &format)
void setBorder(qreal width)
void setBorderBrush(const QBrush &brush)
void setWidth(qreal width)
void setCellPadding(qreal padding)
void setCellSpacing(qreal spacing)
void setColumnWidthConstraints(const QVector< QTextLength > &constraints)
void append(const T &value)
void reserve(int size)

© Klarälvdalens Datakonsult AB (KDAB)
"The Qt, C++ and OpenGL Experts"
https://www.kdab.com/
https://www.kdab.com/development-resources/qt-tools/kd-reports/
Generated on Wed Apr 24 2024 04:08:14 for KD Reports API Documentation by doxygen 1.9.8