Qt
Internal/Contributor docs for the Qt SDK. <b>Note:</b> These are NOT official API docs; those are found <a href='https://doc.qt.io/'>here</a>.
Loading...
Searching...
No Matches
qquicktableview_p_p.h
Go to the documentation of this file.
1// Copyright (C) 2018 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#ifndef QQUICKTABLEVIEW_P_P_H
5#define QQUICKTABLEVIEW_P_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. It exists purely as an
12// implementation detail. This header file may change from version to
13// version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include "qquicktableview_p.h"
19
20#include <QtCore/qtimer.h>
21#include <QtCore/qitemselectionmodel.h>
22#include <QtQmlModels/private/qqmltableinstancemodel_p.h>
23#include <QtQml/private/qqmlincubator_p.h>
24#include <QtQmlModels/private/qqmlchangeset_p.h>
25#include <QtQml/qqmlinfo.h>
26
27#include <QtQuick/private/qminimalflatset_p.h>
28#include <QtQuick/private/qquickflickable_p_p.h>
29#include <QtQuick/private/qquickitemviewfxitem_p_p.h>
30#include <QtQuick/private/qquickanimation_p.h>
31#include <QtQuick/private/qquickselectable_p.h>
32#include <QtQuick/private/qquicksinglepointhandler_p.h>
33#include <QtQuick/private/qquickhoverhandler_p.h>
34#include <QtQuick/private/qquicktaphandler_p.h>
35
37
38Q_DECLARE_LOGGING_CATEGORY(lcTableViewDelegateLifecycle)
39
40static const qreal kDefaultRowHeight = 50;
41static const qreal kDefaultColumnWidth = 50;
42static const int kEdgeIndexNotSet = -2;
43static const int kEdgeIndexAtEnd = -3;
44
45class FxTableItem;
46class QQuickTableSectionSizeProviderPrivate;
47
54{
56
57public:
59 inline bool isHoveringGrid() const { return m_row != -1 || m_column != -1; };
60
61 int m_row = -1;
62 int m_column = -1;
63
65
66protected:
67 void handleEventPoint(QPointerEvent *event, QEventPoint &point) override;
68};
69
78{
79public:
80 enum State {
81 Listening, // the pointer is not being pressed between the cells
82 Tracking, // the pointer is being pressed between the cells
83 DraggingStarted, // dragging started
84 Dragging, // a drag is ongoing
85 DraggingFinished // dragging was finished
86 };
87
89 State state() { return m_state; }
92
94
95 int m_row = -1;
98
99 int m_column = -1;
102
104
105protected:
106 bool wantsEventPoint(const QPointerEvent *event, const QEventPoint &point) override;
109 QPointerEvent *ev, QEventPoint &point) override;
110};
111
116{
118
119public:
121 bool wantsEventPoint(const QPointerEvent *event, const QEventPoint &point) override;
122
124};
125
126
128{
129public:
130 Q_DECLARE_PUBLIC(QQuickTableView)
131
133 {
134 // Whenever we need to load new rows or columns in the
135 // table, we fill out a TableEdgeLoadRequest.
136 // TableEdgeLoadRequest is just a struct that keeps track
137 // of which cells that needs to be loaded, and which cell
138 // the table is currently loading. The loading itself is
139 // done by QQuickTableView.
140
141 public:
142 void begin(const QPoint &cell, const QPointF &pos, QQmlIncubator::IncubationMode incubationMode)
143 {
145 m_active = true;
146 m_edge = Qt::Edge(0);
147 m_mode = incubationMode;
148 m_edgeIndex = cell.x();
149 m_visibleCellsInEdge.clear();
150 m_visibleCellsInEdge.append(cell.y());
151 m_currentIndex = 0;
152 m_startPos = pos;
153 qCDebug(lcTableViewDelegateLifecycle()) << "begin top-left:" << toString();
154 }
155
156 void begin(Qt::Edge edgeToLoad, int edgeIndex, const QVector<int> visibleCellsInEdge, QQmlIncubator::IncubationMode incubationMode)
157 {
159 m_active = true;
160 m_edge = edgeToLoad;
161 m_edgeIndex = edgeIndex;
162 m_visibleCellsInEdge = visibleCellsInEdge;
163 m_mode = incubationMode;
164 m_currentIndex = 0;
165 qCDebug(lcTableViewDelegateLifecycle()) << "begin:" << toString();
166 }
167
168 inline void markAsDone() { m_active = false; }
169 inline bool isActive() const { return m_active; }
170
171 inline QPoint currentCell() const { return cellAt(m_currentIndex); }
172 inline bool hasCurrentCell() const { return m_currentIndex < m_visibleCellsInEdge.size(); }
173 inline void moveToNextCell() { ++m_currentIndex; }
174
175 inline Qt::Edge edge() const { return m_edge; }
176 inline int row() const { return cellAt(0).y(); }
177 inline int column() const { return cellAt(0).x(); }
178 inline QQmlIncubator::IncubationMode incubationMode() const { return m_mode; }
179
180 inline QPointF startPosition() const { return m_startPos; }
181
183 {
184 QString str;
185 QDebug dbg(&str);
186 dbg.nospace() << "TableSectionLoadRequest(" << "edge:"
187 << m_edge << ", edgeIndex:" << m_edgeIndex << ", incubation:";
188
189 switch (m_mode) {
191 dbg << "Asynchronous";
192 break;
194 dbg << "AsynchronousIfNested";
195 break;
197 dbg << "Synchronous";
198 break;
199 }
200
201 return str;
202 }
203
204 private:
205 Qt::Edge m_edge = Qt::Edge(0);
206 QVector<int> m_visibleCellsInEdge;
207 int m_edgeIndex = 0;
208 int m_currentIndex = 0;
209 bool m_active = false;
211 QPointF m_startPos;
212
213 inline QPoint cellAt(int index) const {
214 return !m_edge || (m_edge & (Qt::LeftEdge | Qt::RightEdge))
215 ? QPoint(m_edgeIndex, m_visibleCellsInEdge[index])
216 : QPoint(m_visibleCellsInEdge[index], m_edgeIndex);
217 }
218 };
219
220 class EdgeRange {
221 public:
222 EdgeRange();
223 bool containsIndex(Qt::Edge edge, int index);
224
228 };
229
230 enum class RebuildState {
231 Begin = 0,
232 LoadInitalTable,
233 VerifyTable,
234 LayoutTable,
235 CancelOvershoot,
236 UpdateContentSize,
237 PreloadColumns,
238 PreloadRows,
239 MovePreloadedItemsToPool,
240 Done
241 };
242
243 enum class RebuildOption {
244 None = 0,
245 All = 0x1,
246 LayoutOnly = 0x2,
247 ViewportOnly = 0x4,
248 CalculateNewTopLeftRow = 0x8,
249 CalculateNewTopLeftColumn = 0x10,
250 CalculateNewContentWidth = 0x20,
251 CalculateNewContentHeight = 0x40,
252 PositionViewAtRow = 0x80,
253 PositionViewAtColumn = 0x100,
254 };
255 Q_DECLARE_FLAGS(RebuildOptions, RebuildOption)
256
257public:
259 ~QQuickTableViewPrivate() override;
260
261 static inline QQuickTableViewPrivate *get(QQuickTableView *q) { return q->d_func(); }
262
263 void updatePolish() override;
264 void fixup(AxisData &data, qreal minExtent, qreal maxExtent) override;
265
266public:
267 QHash<int, FxTableItem *> loadedItems;
268
269 // model, tableModel and modelVariant all point to the same model. modelVariant
270 // is the model assigned by the user. And tableModel is the wrapper model we create
271 // around it. But if the model is an instance model directly, we cannot wrap it, so
272 // we need a pointer for that case as well.
274 QPointer<QQmlTableInstanceModel> tableModel = nullptr;
276
277 // When the applications assignes a new model or delegate to the view, we keep them
278 // around until we're ready to take them into use (syncWithPendingChanges).
279 QVariant assignedModel = QVariant(int(0));
280 QQmlGuard<QQmlComponent> assignedDelegate;
281
282 // loadedRows/Columns describes the rows and columns that are currently loaded (from top left
283 // row/column to bottom right row/column). loadedTableOuterRect describes the actual
284 // pixels that all the loaded delegate items cover, and is matched agains the viewport to determine when
285 // we need to fill up with more rows/columns. loadedTableInnerRect describes the pixels
286 // that the loaded table covers if you remove one row/column on each side of the table, and
287 // is used to determine rows/columns that are no longer visible and can be unloaded.
288 QMinimalFlatSet<int> loadedColumns;
289 QMinimalFlatSet<int> loadedRows;
292
293 QPointF origin = QPointF(0, 0);
294 QSizeF endExtent = QSizeF(0, 0);
295
296 QRectF viewportRect = QRectF(0, 0, -1, -1);
297
299
300 RebuildState rebuildState = RebuildState::Done;
301 RebuildOptions rebuildOptions = RebuildOption::All;
302 RebuildOptions scheduledRebuildOptions = RebuildOption::All;
303
305
306 QSizeF cellSpacing = QSizeF(0, 0);
307
309
310 bool blockItemCreatedCallback = false;
311 mutable bool layoutWarningIssued = false;
312 bool polishing = false;
313 bool syncVertically = false;
314 bool syncHorizontally = false;
315 bool inSetLocalViewportPos = false;
316 bool inSyncViewportPosRecursive = false;
317 bool inUpdateContentSize = false;
318 bool animate = true;
319 bool keyNavigationEnabled = true;
320 bool pointerNavigationEnabled = true;
321 bool alternatingRows = true;
322 bool resizableColumns = false;
323 bool resizableRows = false;
324#if QT_CONFIG(cursor)
325 bool m_cursorSet = false;
326#endif
327
328 // isTransposed is currently only used by HeaderView.
329 // Consider making it public.
330 bool isTransposed = false;
331
332 bool warnNoSelectionModel = true;
333
336
337 mutable EdgeRange cachedNextVisibleEdgeIndex[4];
340
341 // TableView uses contentWidth/height to report the size of the table (this
342 // will e.g make scrollbars written for Flickable work out of the box). This
343 // value is continuously calculated, and will change/improve as more columns
344 // are loaded into view. At the same time, we want to open up for the
345 // possibility that the application can set the content width explicitly, in
346 // case it knows what the exact width should be from the start. We therefore
347 // override the contentWidth/height properties from QQuickFlickable, to be able
348 // to implement this combined behavior. This also lets us lazy build the table
349 // if the application needs to know the content size early on.
350 QQmlNullableValue<qreal> explicitContentWidth;
351 QQmlNullableValue<qreal> explicitContentHeight;
352
354
355 QPointer<QQuickTableView> assignedSyncView;
356 QPointer<QQuickTableView> syncView;
357 QList<QPointer<QQuickTableView> > syncChildren;
358 Qt::Orientations assignedSyncDirection = Qt::Horizontal | Qt::Vertical;
359
360 QPointer<QItemSelectionModel> selectionModel;
365 bool inSelectionModelUpdate = false;
366
367 int assignedPositionViewAtRowAfterRebuild = 0;
368 int assignedPositionViewAtColumnAfterRebuild = 0;
369 int positionViewAtRowAfterRebuild = 0;
370 int positionViewAtColumnAfterRebuild = 0;
371 qreal positionViewAtRowOffset = 0;
372 qreal positionViewAtColumnOffset = 0;
375 Qt::Alignment positionViewAtRowAlignment = Qt::AlignTop;
376 Qt::Alignment positionViewAtColumnAlignment = Qt::AlignLeft;
377
380
381 QPoint selectionStartCell = {-1, -1};
382 QPoint selectionEndCell = {-1, -1};
384
387
388 int currentRow = -1;
389 int currentColumn = -1;
390
391 QHash<int, qreal> explicitColumnWidths;
392 QHash<int, qreal> explicitRowHeights;
393
394 QQuickTableViewHoverHandler *hoverHandler = nullptr;
395 QQuickTableViewResizeHandler *resizeHandler = nullptr;
396
397 QQmlTableInstanceModel *editModel = nullptr;
398 QQuickItem *editItem = nullptr;
400 QQuickTableView::EditTriggers editTriggers = QQuickTableView::DoubleTapped | QQuickTableView::EditKeyPressed;
401
402#ifdef QT_DEBUG
403 QString forcedIncubationMode = qEnvironmentVariable("QT_TABLEVIEW_INCUBATION_MODE");
404#endif
405
406public:
407 void init();
408
409 QQuickTableViewAttached *getAttachedObject(const QObject *object) const;
410
411 int modelIndexAtCell(const QPoint &cell) const;
412 QPoint cellAtModelIndex(int modelIndex) const;
413 int modelIndexToCellIndex(const QModelIndex &modelIndex) const;
414 inline bool cellIsValid(const QPoint &cell) const { return cell.x() != -1 && cell.y() != -1; }
415
416 qreal sizeHintForColumn(int column) const;
417 qreal sizeHintForRow(int row) const;
418 QSize calculateTableSize();
420
421 inline bool isColumnHidden(int column) const;
422 inline bool isRowHidden(int row) const;
423
424 qreal getColumnLayoutWidth(int column);
425 qreal getRowLayoutHeight(int row);
426 qreal getColumnWidth(int column) const;
427 qreal getRowHeight(int row) const;
428 qreal getEffectiveRowY(int row) const;
429 qreal getEffectiveRowHeight(int row) const;
430 qreal getEffectiveColumnX(int column) const;
431 qreal getEffectiveColumnWidth(int column) const;
432 qreal getAlignmentContentX(int column, Qt::Alignment alignment, const qreal offset, const QRectF &subRect);
433 qreal getAlignmentContentY(int row, Qt::Alignment alignment, const qreal offset, const QRectF &subRect);
434
435 int topRow() const { return *loadedRows.cbegin(); }
436 int bottomRow() const { return *loadedRows.crbegin(); }
437 int leftColumn() const { return *loadedColumns.cbegin(); }
438 int rightColumn() const { return *loadedColumns.crbegin(); }
439
440 QQuickTableView *rootSyncView() const;
441
442 bool updateTableRecursive();
443 bool updateTable();
444 void relayoutTableItems();
445
446 void layoutVerticalEdge(Qt::Edge tableEdge);
447 void layoutHorizontalEdge(Qt::Edge tableEdge);
448 void layoutTopLeftItem();
449 void layoutTableEdgeFromLoadRequest();
450
451 void updateContentWidth();
452 void updateContentHeight();
453 void updateAverageColumnWidth();
454 void updateAverageRowHeight();
455 RebuildOptions checkForVisibilityChanges();
456 void forceLayout(bool immediate);
457
458 void updateExtents();
459 void syncLoadedTableRectFromLoadedTable();
460 void syncLoadedTableFromLoadRequest();
461 void shiftLoadedTableRect(const QPointF newPosition);
462
463 int nextVisibleEdgeIndex(Qt::Edge edge, int startIndex) const;
464 int nextVisibleEdgeIndexAroundLoadedTable(Qt::Edge edge) const;
465 inline bool atTableEnd(Qt::Edge edge) const { return nextVisibleEdgeIndexAroundLoadedTable(edge) == kEdgeIndexAtEnd; }
466 inline bool atTableEnd(Qt::Edge edge, int startIndex) const { return nextVisibleEdgeIndex(edge, startIndex) == kEdgeIndexAtEnd; }
467 inline int edgeToArrayIndex(Qt::Edge edge) const;
468 void clearEdgeSizeCache();
469
470 bool canLoadTableEdge(Qt::Edge tableEdge, const QRectF fillRect) const;
471 bool canUnloadTableEdge(Qt::Edge tableEdge, const QRectF fillRect) const;
472 Qt::Edge nextEdgeToLoad(const QRectF rect);
473 Qt::Edge nextEdgeToUnload(const QRectF rect);
474
475 qreal cellWidth(const QPoint &cell) const;
476 qreal cellHeight(const QPoint &cell) const;
477
478 FxTableItem *loadedTableItem(const QPoint &cell) const;
479 FxTableItem *createFxTableItem(const QPoint &cell, QQmlIncubator::IncubationMode incubationMode);
480 FxTableItem *loadFxTableItem(const QPoint &cell, QQmlIncubator::IncubationMode incubationMode);
481
482 void releaseItem(FxTableItem *fxTableItem, QQmlTableInstanceModel::ReusableFlag reusableFlag);
483 void releaseLoadedItems(QQmlTableInstanceModel::ReusableFlag reusableFlag);
484
485 void unloadItem(const QPoint &cell);
486 void loadEdge(Qt::Edge edge, QQmlIncubator::IncubationMode incubationMode);
487 void unloadEdge(Qt::Edge edge);
488 void loadAndUnloadVisibleEdges(QQmlIncubator::IncubationMode incubationMode = QQmlIncubator::AsynchronousIfNested);
489 void drainReusePoolAfterLoadRequest();
490 void processLoadRequest();
491
492 void processRebuildTable();
493 bool moveToNextRebuildState();
494 void calculateTopLeft(QPoint &topLeft, QPointF &topLeftPos);
495 void loadInitialTable();
496
497 void layoutAfterLoadingInitialTable();
498 void adjustViewportXAccordingToAlignment();
499 void adjustViewportYAccordingToAlignment();
500 void cancelOvershootAfterLayout();
501
502 void scheduleRebuildTable(QQuickTableViewPrivate::RebuildOptions options);
503
504#if QT_CONFIG(cursor)
505 void updateCursor();
506#endif
507 void updateEditItem();
508 void updateContentSize();
509
510 QTypeRevision resolveImportVersion();
511 void createWrapperModel();
512 QAbstractItemModel *qaim(QVariant modelAsVariant) const;
513
514 virtual void initItemCallback(int modelIndex, QObject *item);
515 virtual void itemCreatedCallback(int modelIndex, QObject *object);
516 virtual void itemPooledCallback(int modelIndex, QObject *object);
517 virtual void itemReusedCallback(int modelIndex, QObject *object);
518 virtual void modelUpdated(const QQmlChangeSet &changeSet, bool reset);
519
520 virtual void syncWithPendingChanges();
521 virtual void syncDelegate();
522 virtual QVariant modelImpl() const;
523 virtual void setModelImpl(const QVariant &newModel);
524 virtual void syncModel();
525 virtual void syncSyncView();
526 virtual void syncPositionView();
527 virtual QAbstractItemModel *selectionSourceModel();
528 inline void syncRebuildOptions();
529
530 void connectToModel();
531 void disconnectFromModel();
532
533 void rowsMovedCallback(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row);
534 void columnsMovedCallback(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int column);
535 void rowsInsertedCallback(const QModelIndex &parent, int begin, int end);
536 void rowsRemovedCallback(const QModelIndex &parent, int begin, int end);
537 void columnsInsertedCallback(const QModelIndex &parent, int begin, int end);
538 void columnsRemovedCallback(const QModelIndex &parent, int begin, int end);
539 void layoutChangedCallback(const QList<QPersistentModelIndex> &parents, QAbstractItemModel::LayoutChangeHint hint);
540 void modelResetCallback();
541 bool compareModel(const QVariant& model1, const QVariant& model2) const;
542
543 void positionViewAtRow(int row, Qt::Alignment alignment, qreal offset, const QRectF subRect = QRectF());
544 void positionViewAtColumn(int column, Qt::Alignment alignment, qreal offset, const QRectF subRect = QRectF());
545 bool scrollToRow(int row, Qt::Alignment alignment, qreal offset, const QRectF subRect = QRectF());
546 bool scrollToColumn(int column, Qt::Alignment alignment, qreal offset, const QRectF subRect = QRectF());
547
548 void scheduleRebuildIfFastFlick();
549 void setLocalViewportX(qreal contentX);
550 void setLocalViewportY(qreal contentY);
551 void syncViewportRect();
552 void syncViewportPosRecursive();
553
554 bool selectedInSelectionModel(const QPoint &cell) const;
555 void selectionChangedInSelectionModel(const QItemSelection &selected, const QItemSelection &deselected);
556 void updateSelectedOnAllDelegateItems();
557 void setSelectedOnDelegateItem(const QModelIndex &modelIndex, bool select);
558
559 bool currentInSelectionModel(const QPoint &cell) const;
560 void currentChangedInSelectionModel(const QModelIndex &current, const QModelIndex &previous);
561 void setCurrentOnDelegateItem(const QModelIndex &index, bool isCurrent);
562 void updateCurrentRowAndColumn();
563
564 void fetchMoreData();
565
568
569 inline QString tableLayoutToString() const;
570 void dumpTable() const;
571
572 void setRequiredProperty(const char *property,
573 const QVariant &value,
574 int serializedModelIndex,
575 QObject *object, bool init);
576
577 void handleTap(const QQuickHandlerPoint &point);
578 void setCurrentIndexFromTap(const QPointF &pos);
579 void setCurrentIndex(const QPoint &cell);
580 bool setCurrentIndexFromKeyEvent(QKeyEvent *e);
581 bool canEdit(const QModelIndex tappedIndex, bool warn);
582 bool editFromKeyEvent(QKeyEvent *e);
583
584 // QQuickSelectable
585 QQuickItem *selectionPointerHandlerTarget() const override;
586 bool startSelection(const QPointF &pos, Qt::KeyboardModifiers modifiers) override;
587 void setSelectionStartPos(const QPointF &pos) override;
588 void setSelectionEndPos(const QPointF &pos) override;
589 void clearSelection() override;
590 void normalizeSelection() override;
591 QRectF selectionRectangle() const override;
592 QSizeF scrollTowardsSelectionPoint(const QPointF &pos, const QSizeF &step) override;
593 void setCallback(std::function<void(CallBackFlag)> func) override;
594 void cancelSelectionTracking();
595
596 QPoint clampedCellAtPos(const QPointF &pos) const;
597 virtual void updateSelection(const QRect &oldSelection, const QRect &newSelection);
598 QRect selection() const;
599 // ----------------
600};
601
603{
604public:
609
610 qreal position() const override { return 0; }
611 qreal endPosition() const override { return 0; }
612 qreal size() const override { return 0; }
613 qreal sectionSize() const override { return 0; }
614 bool contains(qreal, qreal) const override { return false; }
615
617};
618
619Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickTableViewPrivate::RebuildOptions)
620
622
623#endif
bool m_active
qreal sectionSize() const override
qreal endPosition() const override
qreal size() const override
qreal position() const override
FxTableItem(QQuickItem *item, QQuickTableView *table, bool own)
bool contains(qreal, qreal) const override
LayoutChangeHint
This enum describes the way the model changes layout.
\inmodule QtCore
The QEventPoint class provides information about a point in a QPointerEvent.
Definition qeventpoint.h:20
SelectionFlag
This enum describes the way the selection model will be updated.
\inmodule QtCore
The QJSValue class acts as a container for Qt/JavaScript data types.
Definition qjsvalue.h:31
The QKeyEvent class describes a key event.
Definition qevent.h:424
\inmodule QtCore
Definition qmargins.h:24
\inmodule QtCore
\inmodule QtCore
Definition qobject.h:103
\inmodule QtCore\reentrant
Definition qpoint.h:217
\inmodule QtCore\reentrant
Definition qpoint.h:25
constexpr int x() const noexcept
Returns the x coordinate of this point.
Definition qpoint.h:130
constexpr int y() const noexcept
Returns the y coordinate of this point.
Definition qpoint.h:135
A base class for pointer events.
Definition qevent.h:73
GrabTransition
This enum represents a transition of exclusive or passive grab from one object (possibly nullptr) to ...
The QQmlChangeSet class stores an ordered list of notifications about changes to a linear data set.
IncubationMode
Specifies the mode the incubator operates in.
QPointer< QQuickItem > item
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
Definition qquickitem.h:63
void begin(Qt::Edge edgeToLoad, int edgeIndex, const QVector< int > visibleCellsInEdge, QQmlIncubator::IncubationMode incubationMode)
QQmlIncubator::IncubationMode incubationMode() const
void begin(const QPoint &cell, const QPointF &pos, QQmlIncubator::IncubationMode incubationMode)
bool atTableEnd(Qt::Edge edge, int startIndex) const
std::function< void(CallBackFlag)> selectableCallbackFunction
QQmlNullableValue< qreal > explicitContentWidth
bool atTableEnd(Qt::Edge edge) const
void registerCallbackWhenBindingsAreEvaluated()
QList< QPointer< QQuickTableView > > syncChildren
QQmlGuard< QQmlComponent > assignedDelegate
static QQuickTableViewPrivate * get(QQuickTableView *q)
bool cellIsValid(const QPoint &cell) const
QPointer< QQuickTableView > assignedSyncView
QQmlNullableValue< qreal > explicitContentHeight
TableEdgeLoadRequest loadRequest
QQuickPropertyAnimation positionXAnimation
QMinimalFlatSet< int > loadedColumns
QHash< int, FxTableItem * > loadedItems
QMinimalFlatSet< int > loadedRows
QPointer< QItemSelectionModel > selectionModel
QHash< int, qreal > explicitColumnWidths
QHash< int, qreal > explicitRowHeights
QPointer< QQuickTableView > syncView
QQuickPropertyAnimation positionYAnimation
QPersistentModelIndex editIndex
void onGrabChanged(QQuickPointerHandler *grabber, QPointingDevice::GrabTransition transition, QPointerEvent *ev, QEventPoint &point) override
Notification that the grab has changed in some way which is relevant to this handler.
void updateState(QEventPoint &point)
void updateDrag(QPointerEvent *event, QEventPoint &point)
QQuickTableViewResizeHandler(QQuickTableView *view)
void handleEventPoint(QPointerEvent *event, QEventPoint &point) override
bool wantsEventPoint(const QPointerEvent *event, const QEventPoint &point) override
Returns true if the given point (as part of event) could be relevant at all to this handler,...
bool wantsEventPoint(const QPointerEvent *event, const QEventPoint &point) override
Returns true if the given point (as part of event) could be relevant at all to this handler,...
QQuickTableViewTapHandler(QQuickTableView *view)
\inmodule QtCore\reentrant
Definition qrect.h:484
\inmodule QtCore\reentrant
Definition qrect.h:30
\inmodule QtCore
Definition qsize.h:208
\inmodule QtCore
Definition qsize.h:25
\macro QT_RESTRICTED_CAST_FROM_ASCII
Definition qstring.h:129
\inmodule QtCore
\inmodule QtCore
Definition qvariant.h:65
EGLImageKHR int int EGLuint64KHR * modifiers
QString str
[2]
rect
[4]
uint alignment
Combined button and popup list for selecting options.
@ AlignTop
Definition qnamespace.h:153
@ AlignLeft
Definition qnamespace.h:144
@ Horizontal
Definition qnamespace.h:99
@ Vertical
Definition qnamespace.h:100
@ RightEdge
@ LeftEdge
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char return DBusMessage dbus_bool_t return DBusMessage dbus_uint32_t return DBusMessage void
DBusConnection const char DBusError DBusBusType DBusError return DBusConnection DBusHandleMessageFunction void DBusFreeFunction return DBusConnection return DBusConnection return const char DBusError return DBusConnection DBusMessage dbus_uint32_t return DBusConnection dbus_bool_t DBusConnection DBusAddWatchFunction DBusRemoveWatchFunction DBusWatchToggledFunction void DBusFreeFunction return DBusConnection DBusDispatchStatusFunction void DBusFreeFunction DBusTimeout return DBusTimeout return DBusWatch return DBusWatch unsigned int return DBusError const DBusError return const DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessage return DBusMessageIter int const void return DBusMessageIter DBusMessageIter return DBusMessageIter void DBusMessageIter void int return DBusMessage DBusMessageIter return DBusMessageIter return DBusMessageIter DBusMessageIter const char const char const char const char return DBusMessage return DBusMessage const char * destination
static QDBusError::ErrorType get(const char *name)
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
@ None
Definition qhash.cpp:531
#define qCDebug(category,...)
#define Q_DECLARE_LOGGING_CATEGORY(name)
GLuint index
[2]
GLuint GLuint end
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLuint start
GLenum GLuint GLintptr offset
GLenum GLenum GLsizei void GLsizei void * column
struct _cl_event * event
GLboolean reset
GLenum func
Definition qopenglext.h:663
GLdouble GLdouble GLdouble GLdouble q
Definition qopenglext.h:259
GLenum GLenum GLsizei void * row
GLenum GLenum GLsizei void * table
static const qreal kDefaultColumnWidth
static const int kEdgeIndexAtEnd
static QT_BEGIN_NAMESPACE const qreal kDefaultRowHeight
static const int kEdgeIndexNotSet
#define Q_ASSERT(cond)
Definition qrandom.cpp:47
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)
static QT_BEGIN_NAMESPACE QVariant hint(QPlatformIntegration::StyleHint h)
QString qEnvironmentVariable(const char *varName, const QString &defaultValue)
static QT_BEGIN_NAMESPACE void init(QTextBoundaryFinder::BoundaryType type, QStringView str, QCharAttributes *attributes)
#define Q_OBJECT
double qreal
Definition qtypes.h:187
const char property[13]
Definition qwizard.cpp:101
QSqlQueryModel * model
[16]
QGraphicsItem * item
QItemSelection * selection
[0]
selection select(topLeft, bottomRight)
QQuickView * view
[0]
char * toString(const MyType &t)
[31]