KD Reports API Documentation  2.1
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-2022 Klarälvdalens Datakonsult AB, a KDAB Group company <info@kdab.com>
6 **
7 ** SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDAB-KDReports OR LicenseRef-KDAB-KDReports-US
8 **
9 ** Licensees holding valid commercial KD Reports licenses may use this file in
10 ** accordance with the KD Reports Commercial License Agreement provided with
11 ** the Software.
12 **
13 ** Contact info@kdab.com if any conditions of this licensing are not clear to you.
14 **
15 ****************************************************************************/
16 
19 #include <QDebug>
20 #include <QTextCursor>
21 #include <QTextTableFormat>
22 
23 class KDReports::AbstractTableElementPrivate
24 {
25 public:
26  qreal m_border = 1.0;
27  QBrush m_borderBrush = QBrush(Qt::darkGray /*like Qt does*/);
28  qreal m_padding = 0.5;
29  qreal m_width = 0;
31  QFont m_defaultFont;
32  bool m_fontSpecified = false;
34 };
35 
37  : Element()
38  , d(new AbstractTableElementPrivate)
39 {
40 }
41 
43  : Element(other)
44  , d(new AbstractTableElementPrivate(*other.d))
45 {
46 }
47 
49 {
50  if (&other == this)
51  return *this;
52  Element::operator=(other);
53  *d = *other.d;
54  return *this;
55 }
56 
58 {
59  d->m_constraints = constraints;
60 }
61 
63 {
64 }
65 
67 {
68  d->m_border = border;
69 }
70 
72 {
73  return d->m_border;
74 }
75 
77 {
78  d->m_borderBrush = brush;
79 }
80 
82 {
83  return d->m_borderBrush;
84 }
85 
87 {
88  d->m_padding = padding;
89 }
90 
92 {
93  return d->m_padding;
94 }
95 
97 {
98  d->m_width = width;
99  d->m_unit = unit;
100 }
101 
103 {
104  return d->m_width;
105 }
106 
108 {
109  return d->m_unit;
110 }
111 
113 {
114  d->m_defaultFont = font;
115  d->m_fontSpecified = true;
116 }
117 
119 {
120  *isSet = d->m_fontSpecified;
121  return d->m_defaultFont;
122 }
123 
125 {
126  if (d->m_width) {
127  if (d->m_unit == Millimeters) {
128  tableFormat.setWidth(QTextLength(QTextLength::FixedLength, mmToPixels(d->m_width)));
129  } else {
130  tableFormat.setWidth(QTextLength(QTextLength::PercentageLength, d->m_width));
131  }
132  }
133 
134  if (!d->m_constraints.isEmpty()) {
135  QVector<QTextLength> constraints;
136  constraints.reserve(d->m_constraints.size());
137  for (const auto &c : qAsConst(d->m_constraints)) {
138  QTextLength length;
139  if (c.unit == Millimeters) {
140  length = QTextLength(QTextLength::FixedLength, mmToPixels(c.width));
141  } else {
142  length = QTextLength(QTextLength::PercentageLength, c.width);
143  }
144  constraints.append(length);
145  }
146  tableFormat.setColumnWidthConstraints(constraints);
147  }
148 
149  tableFormat.setBorder(border());
150  tableFormat.setBorderBrush(borderBrush());
151  tableFormat.setCellPadding(mmToPixels(padding()));
152  tableFormat.setCellSpacing(0); // HTML-like table borders look so old century
153  if (d->m_fontSpecified) {
154  QTextCharFormat charFormat = textDocCursor.charFormat();
155  charFormat.setFont(d->m_defaultFont);
156  textDocCursor.setCharFormat(charFormat);
157  }
158 }
KDReports::AbstractTableElement::setWidth
void setWidth(qreal width, Unit unit=Millimeters)
Definition: KDReportsAbstractTableElement.cpp:96
KDReports::AbstractTableElement::setBorder
void setBorder(qreal border)
Definition: KDReportsAbstractTableElement.cpp:66
QTextTableFormat::setColumnWidthConstraints
void setColumnWidthConstraints(const QVector< QTextLength > &constraints)
QTextCharFormat
KDReports::Millimeters
@ Millimeters
Millimeters (the default)
Definition: KDReportsUnit.h:26
QVector::append
void append(const T &value)
QTextFrameFormat::setWidth
void setWidth(qreal width)
QTextTableFormat::setCellSpacing
void setCellSpacing(qreal spacing)
KDReports::AbstractTableElement::setColumnConstraints
void setColumnConstraints(const QVector< ColumnConstraint > &constraints)
Definition: KDReportsAbstractTableElement.cpp:57
KDReports::AbstractTableElement::border
qreal border() const
Definition: KDReportsAbstractTableElement.cpp:71
KDReports::Element
Definition: KDReportsElement.h:41
QTextCursor::setCharFormat
void setCharFormat(const QTextCharFormat &format)
QTextLength
KDReports::AbstractTableElement::fillTableFormat
void fillTableFormat(QTextTableFormat &tableFormat, QTextCursor &textDocCursor) const
Definition: KDReportsAbstractTableElement.cpp:124
KDReports::AbstractTableElement::~AbstractTableElement
~AbstractTableElement() override
Definition: KDReportsAbstractTableElement.cpp:62
KDReportsAbstractTableElement.h
KDReports::Element::operator=
Element & operator=(const Element &other)
Definition: KDReportsElement.cpp:36
KDReports::AbstractTableElement::width
qreal width() const
Definition: KDReportsAbstractTableElement.cpp:102
KDReports::Unit
Unit
Definition: KDReportsUnit.h:25
KDReports::AbstractTableElement::setPadding
void setPadding(qreal padding)
Definition: KDReportsAbstractTableElement.cpp:86
KDReports::AbstractTableElement::padding
qreal padding() const
Definition: KDReportsAbstractTableElement.cpp:91
QTextCharFormat::setFont
void setFont(const QFont &font, QTextCharFormat::FontPropertiesInheritanceBehavior behavior)
QTextFrameFormat::setBorderBrush
void setBorderBrush(const QBrush &brush)
QTextFrameFormat::setBorder
void setBorder(qreal width)
QBrush
QVector::reserve
void reserve(int size)
QTextTableFormat::setCellPadding
void setCellPadding(qreal padding)
KDReports::AbstractTableElement::operator=
AbstractTableElement & operator=(const AbstractTableElement &other)
Definition: KDReportsAbstractTableElement.cpp:48
QTextTableFormat
KDReports::mmToPixels
KDREPORTS_EXPORT qreal mmToPixels(qreal mm)
Definition: KDReportsLayoutHelper.cpp:23
KDReports::AbstractTableElement::setDefaultFont
void setDefaultFont(const QFont &font)
Definition: KDReportsAbstractTableElement.cpp:112
KDReportsLayoutHelper_p.h
QTextLength::FixedLength
FixedLength
KDReports::AbstractTableElement::defaultFont
QFont defaultFont(bool *isSet) const
Definition: KDReportsAbstractTableElement.cpp:118
QVector< KDReports::AbstractTableElement::ColumnConstraint >
KDReports::AbstractTableElement::borderBrush
QBrush borderBrush() const
Definition: KDReportsAbstractTableElement.cpp:81
QFont
KDReports::AbstractTableElement
Definition: KDReportsAbstractTableElement.h:39
Qt::darkGray
darkGray
QTextCursor
KDReports::AbstractTableElement::setBorderBrush
void setBorderBrush(const QBrush &brush)
Definition: KDReportsAbstractTableElement.cpp:76
QTextCursor::charFormat
QTextCharFormat charFormat() const const
KDReports::AbstractTableElement::unit
Unit unit() const
Definition: KDReportsAbstractTableElement.cpp:107
KDReports::AbstractTableElement::AbstractTableElement
AbstractTableElement()
Definition: KDReportsAbstractTableElement.cpp:36

© 2007-2021 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 Fri Jul 15 2022 13:09:06 for KD Reports API Documentation by doxygen 1.8.20