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 Q_ASSERT(index.isValid());
148 const int vHeader = verticalHeader ? 1 : 0;
149 return (index.row() + (horizontalHeader ? 1 : 0)) * (index.model()->columnCount() + vHeader)
150 + index.column() + vHeader;
154 int sectionSpanEndLogical(
const QHeaderView *header,
int logical,
int span)
const;
155 int sectionSpanSize(
const QHeaderView *header,
int logical,
int span)
const;
156 bool spanContainsSection(
const QHeaderView *header,
int logical,
int spanLogical,
int span)
const;
157 void drawAndClipSpans(
const QRegion &area, QPainter *painter,
158 const QStyleOptionViewItem &option, QBitArray *drawn,
159 int firstVisualRow,
int lastVisualRow,
int firstVisualColumn,
int lastVisualColumn);
160 void drawCell(QPainter *painter,
const QStyleOptionViewItem &option,
const QModelIndex &index);
161 int widthHintForIndex(
const QModelIndex &index,
int hint,
const QStyleOptionViewItem &option)
const;
162 int heightHintForIndex(
const QModelIndex &index,
int hint, QStyleOptionViewItem &option)
const;
165 Qt::PenStyle gridStyle;
166 QBasicTimer columnResizeTimer;
167 QBasicTimer rowResizeTimer;
168 QList<
int> columnsToUpdate;
169 QList<
int> rowsToUpdate;
170 QHeaderView *horizontalHeader;
171 QHeaderView *verticalHeader;
172#if QT_CONFIG(abstractbutton)
173 QTableCornerButton *cornerWidget;
174 QMetaObject::Connection cornerWidgetConnection;
176 QMetaObject::Connection selectionmodelConnection;
177 std::array<QMetaObject::Connection, 4> modelConnections;
178 std::array<QMetaObject::Connection, 7> verHeaderConnections;
179 std::array<QMetaObject::Connection, 5> horHeaderConnections;
180 std::vector<QMetaObject::Connection> dynHorHeaderConnections;
183 bool geometryRecursionBlock;
186 QSpanCollection spans;
188 void setSpan(
int row,
int column,
int rowSpan,
int columnSpan);
189 QSpanCollection::Span span(
int row,
int column)
const;
190 inline int rowSpan(
int row,
int column)
const {
191 return span(row, column).height();
193 inline int columnSpan(
int row,
int column)
const {
194 return span(row, column).width();
196 inline bool hasSpans()
const {
197 return !spans.spans.empty();
199 inline int rowSpanHeight(
int row,
int span)
const {
200 return sectionSpanSize(verticalHeader, row, span);
202 inline int columnSpanWidth(
int column,
int span)
const {
203 return sectionSpanSize(horizontalHeader, column, span);
205 inline int rowSpanEndLogical(
int row,
int span)
const {
206 return sectionSpanEndLogical(verticalHeader, row, span);
208 inline int columnSpanEndLogical(
int column,
int span)
const {
209 return sectionSpanEndLogical(horizontalHeader, column, span);
212 inline bool isRowHidden(
int row)
const {
213 return verticalHeader->isSectionHidden(row);
215 inline bool isColumnHidden(
int column)
const {
216 return horizontalHeader->isSectionHidden(column);
218 inline bool isCellEnabled(
int row,
int column)
const {
219 return isIndexEnabled(model->index(row, column, root));
222 enum class SearchDirection
227 int nextActiveVisualRow(
int rowToStart,
int column,
int limit,
228 SearchDirection searchDirection)
const;
229 int nextActiveVisualColumn(
int row,
int columnToStart,
int limit,
230 SearchDirection searchDirection)
const;
232 QRect visualSpanRect(
const QSpanCollection::Span &span)
const;
234 void selectRow(
int row,
bool anchor);
235 void selectColumn(
int column,
bool anchor);
237 void updateSpanInsertedRows(
const QModelIndex &parent,
int start,
int end);
238 void updateSpanInsertedColumns(
const QModelIndex &parent,
int start,
int end);
239 void updateSpanRemovedRows(
const QModelIndex &parent,
int start,
int end);
240 void updateSpanRemovedColumns(
const QModelIndex &parent,
int start,
int end);
241 void sortIndicatorChanged(
int column, Qt::SortOrder order);