107 Q_DECLARE_PUBLIC(QTableView)
110 : showGrid(
true), gridStyle(Qt::SolidLine),
111 horizontalHeader(
nullptr), verticalHeader(
nullptr),
112 sortingEnabled(
false), geometryRecursionBlock(
false),
113 visualCursor(QPoint())
116#if QT_CONFIG(draganddrop)
121 void clearConnections();
122 void trimHiddenSelections(QItemSelectionRange *range)
const;
123 QRect intersectedRect(
const QRect rect,
const QModelIndex &topLeft,
const QModelIndex &bottomRight)
const override;
125 inline bool isHidden(
int row,
int col)
const {
126 return verticalHeader->isSectionHidden(row)
127 || horizontalHeader->isSectionHidden(col);
129 inline int visualRow(
int logicalRow)
const {
130 return verticalHeader->visualIndex(logicalRow);
132 inline int visualColumn(
int logicalCol)
const {
133 return horizontalHeader->visualIndex(logicalCol);
135 inline int logicalRow(
int visualRow)
const {
136 return verticalHeader->logicalIndex(visualRow);
138 inline int logicalColumn(
int visualCol)
const {
139 return horizontalHeader->logicalIndex(visualCol);
142 QStyleOptionViewItem::ViewItemPosition viewItemPosition(
const QModelIndex &index)
const;
144#if QT_CONFIG(accessibility)
145 inline int accessibleChildIndex(
const QModelIndex &index)
const override
147 const int vHeader = verticalHeader ? 1 : 0;
148 return (index.row() + (horizontalHeader ? 1 : 0)) * (index.model()->columnCount() + vHeader)
149 + index.column() + vHeader;
153 int sectionSpanEndLogical(
const QHeaderView *header,
int logical,
int span)
const;
154 int sectionSpanSize(
const QHeaderView *header,
int logical,
int span)
const;
155 bool spanContainsSection(
const QHeaderView *header,
int logical,
int spanLogical,
int span)
const;
156 void drawAndClipSpans(
const QRegion &area, QPainter *painter,
157 const QStyleOptionViewItem &option, QBitArray *drawn,
158 int firstVisualRow,
int lastVisualRow,
int firstVisualColumn,
int lastVisualColumn);
159 void drawCell(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index);
160 int widthHintForIndex(
const QModelIndex &index,
int hint,
const QStyleOptionViewItem &option)
const;
161 int heightHintForIndex(
const QModelIndex &index,
int hint, QStyleOptionViewItem &option)
const;
164 Qt::PenStyle gridStyle;
165 QBasicTimer columnResizeTimer;
166 QBasicTimer rowResizeTimer;
167 QList<
int> columnsToUpdate;
168 QList<
int> rowsToUpdate;
169 QHeaderView *horizontalHeader;
170 QHeaderView *verticalHeader;
171#if QT_CONFIG(abstractbutton)
172 QTableCornerButton *cornerWidget;
173 QMetaObject::Connection cornerWidgetConnection;
175 QMetaObject::Connection selectionmodelConnection;
176 std::array<QMetaObject::Connection, 4> modelConnections;
177 std::array<QMetaObject::Connection, 7> verHeaderConnections;
178 std::array<QMetaObject::Connection, 5> horHeaderConnections;
179 std::vector<QMetaObject::Connection> dynHorHeaderConnections;
182 bool geometryRecursionBlock;
185 QSpanCollection spans;
187 void setSpan(
int row,
int column,
int rowSpan,
int columnSpan);
188 QSpanCollection::Span span(
int row,
int column)
const;
189 inline int rowSpan(
int row,
int column)
const {
190 return span(row, column).height();
192 inline int columnSpan(
int row,
int column)
const {
193 return span(row, column).width();
195 inline bool hasSpans()
const {
196 return !spans.spans.empty();
198 inline int rowSpanHeight(
int row,
int span)
const {
199 return sectionSpanSize(verticalHeader, row, span);
201 inline int columnSpanWidth(
int column,
int span)
const {
202 return sectionSpanSize(horizontalHeader, column, span);
204 inline int rowSpanEndLogical(
int row,
int span)
const {
205 return sectionSpanEndLogical(verticalHeader, row, span);
207 inline int columnSpanEndLogical(
int column,
int span)
const {
208 return sectionSpanEndLogical(horizontalHeader, column, span);
211 inline bool isRowHidden(
int row)
const {
212 return verticalHeader->isSectionHidden(row);
214 inline bool isColumnHidden(
int column)
const {
215 return horizontalHeader->isSectionHidden(column);
217 inline bool isCellEnabled(
int row,
int column)
const {
218 return isIndexEnabled(model->index(row, column, root));
221 enum class SearchDirection
226 int nextActiveVisualRow(
int rowToStart,
int column,
int limit,
227 SearchDirection searchDirection)
const;
228 int nextActiveVisualColumn(
int row,
int columnToStart,
int limit,
229 SearchDirection searchDirection)
const;
231 QRect visualSpanRect(
const QSpanCollection::Span &span)
const;
233 void selectRow(
int row,
bool anchor);
234 void selectColumn(
int column,
bool anchor);
236 void updateSpanInsertedRows(
const QModelIndex &parent,
int start,
int end);
237 void updateSpanInsertedColumns(
const QModelIndex &parent,
int start,
int end);
238 void updateSpanRemovedRows(
const QModelIndex &parent,
int start,
int end);
239 void updateSpanRemovedColumns(
const QModelIndex &parent,
int start,
int end);
240 void sortIndicatorChanged(
int column, Qt::SortOrder order);