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 inline int accessibleTable2Index(
const QModelIndex &index)
const {
145 const int vHeader = verticalHeader ? 1 : 0;
146 return (index.row() + (horizontalHeader ? 1 : 0)) * (index.model()->columnCount() + vHeader)
147 + index.column() + vHeader;
150 int sectionSpanEndLogical(
const QHeaderView *header,
int logical,
int span)
const;
151 int sectionSpanSize(
const QHeaderView *header,
int logical,
int span)
const;
152 bool spanContainsSection(
const QHeaderView *header,
int logical,
int spanLogical,
int span)
const;
153 void drawAndClipSpans(
const QRegion &area, QPainter *painter,
154 const QStyleOptionViewItem &option, QBitArray *drawn,
155 int firstVisualRow,
int lastVisualRow,
int firstVisualColumn,
int lastVisualColumn);
156 void drawCell(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index);
157 int widthHintForIndex(
const QModelIndex &index,
int hint,
const QStyleOptionViewItem &option)
const;
158 int heightHintForIndex(
const QModelIndex &index,
int hint, QStyleOptionViewItem &option)
const;
161 Qt::PenStyle gridStyle;
162 QBasicTimer columnResizeTimer;
163 QBasicTimer rowResizeTimer;
164 QList<
int> columnsToUpdate;
165 QList<
int> rowsToUpdate;
166 QHeaderView *horizontalHeader;
167 QHeaderView *verticalHeader;
168#if QT_CONFIG(abstractbutton)
169 QTableCornerButton *cornerWidget;
170 QMetaObject::Connection cornerWidgetConnection;
172 QMetaObject::Connection selectionmodelConnection;
173 std::array<QMetaObject::Connection, 4> modelConnections;
174 std::array<QMetaObject::Connection, 7> verHeaderConnections;
175 std::array<QMetaObject::Connection, 5> horHeaderConnections;
176 std::vector<QMetaObject::Connection> dynHorHeaderConnections;
179 bool geometryRecursionBlock;
182 QSpanCollection spans;
184 void setSpan(
int row,
int column,
int rowSpan,
int columnSpan);
185 QSpanCollection::Span span(
int row,
int column)
const;
186 inline int rowSpan(
int row,
int column)
const {
187 return span(row, column).height();
189 inline int columnSpan(
int row,
int column)
const {
190 return span(row, column).width();
192 inline bool hasSpans()
const {
193 return !spans.spans.empty();
195 inline int rowSpanHeight(
int row,
int span)
const {
196 return sectionSpanSize(verticalHeader, row, span);
198 inline int columnSpanWidth(
int column,
int span)
const {
199 return sectionSpanSize(horizontalHeader, column, span);
201 inline int rowSpanEndLogical(
int row,
int span)
const {
202 return sectionSpanEndLogical(verticalHeader, row, span);
204 inline int columnSpanEndLogical(
int column,
int span)
const {
205 return sectionSpanEndLogical(horizontalHeader, column, span);
208 inline bool isRowHidden(
int row)
const {
209 return verticalHeader->isSectionHidden(row);
211 inline bool isColumnHidden(
int column)
const {
212 return horizontalHeader->isSectionHidden(column);
214 inline bool isCellEnabled(
int row,
int column)
const {
215 return isIndexEnabled(model->index(row, column, root));
218 enum class SearchDirection
223 int nextActiveVisualRow(
int rowToStart,
int column,
int limit,
224 SearchDirection searchDirection)
const;
225 int nextActiveVisualColumn(
int row,
int columnToStart,
int limit,
226 SearchDirection searchDirection)
const;
228 QRect visualSpanRect(
const QSpanCollection::Span &span)
const;
230 void selectRow(
int row,
bool anchor);
231 void selectColumn(
int column,
bool anchor);
233 void updateSpanInsertedRows(
const QModelIndex &parent,
int start,
int end);
234 void updateSpanInsertedColumns(
const QModelIndex &parent,
int start,
int end);
235 void updateSpanRemovedRows(
const QModelIndex &parent,
int start,
int end);
236 void updateSpanRemovedColumns(
const QModelIndex &parent,
int start,
int end);
237 void sortIndicatorChanged(
int column, Qt::SortOrder order);