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/qquickflickable_p_p.h>
28#include <QtQuick/private/qquickitemviewfxitem_p_p.h>
29#include <QtQuick/private/qquickanimation_p.h>
30#include <QtQuick/private/qquickselectable_p.h>
31#include <QtQuick/private/qquicksinglepointhandler_p.h>
32#include <QtQuick/private/qquickhoverhandler_p.h>
33#include <QtQuick/private/qquicktaphandler_p.h>
34
35#include <QtCore/private/qminimalflatset_p.h>
36
38
39Q_DECLARE_LOGGING_CATEGORY(lcTableViewDelegateLifecycle)
40
41static const qreal kDefaultRowHeight = 50;
42static const qreal kDefaultColumnWidth = 50;
43static const int kEdgeIndexNotSet = -2;
44static const int kEdgeIndexAtEnd = -3;
45
46class FxTableItem;
47class QQuickTableSectionSizeProviderPrivate;
48
55{
57
58public:
60 inline bool isHoveringGrid() const { return m_row != -1 || m_column != -1; };
61
62 int m_row = -1;
63 int m_column = -1;
64
66
67protected:
68 void handleEventPoint(QPointerEvent *event, QEventPoint &point) override;
69};
70
79{
80public:
81 enum State {
82 Listening, // the pointer is not being pressed between the cells
83 Tracking, // the pointer is being pressed between the cells
84 DraggingStarted, // dragging started
85 Dragging, // a drag is ongoing
86 DraggingFinished // dragging was finished
87 };
88
90 State state() { return m_state; }
93
95
96 int m_row = -1;
99
100 int m_column = -1;
103
105
106protected:
107 bool wantsEventPoint(const QPointerEvent *event, const QEventPoint &point) override;
110 QPointerEvent *ev, QEventPoint &point) override;
111};
112
117{
119
120public:
122 bool wantsEventPoint(const QPointerEvent *event, const QEventPoint &point) override;
123
125};
126
127
129{
130public:
131 Q_DECLARE_PUBLIC(QQuickTableView)
132
134 {
135 // Whenever we need to load new rows or columns in the
136 // table, we fill out a TableEdgeLoadRequest.
137 // TableEdgeLoadRequest is just a struct that keeps track
138 // of which cells that needs to be loaded, and which cell
139 // the table is currently loading. The loading itself is
140 // done by QQuickTableView.
141
142 public:
143 void begin(const QPoint &cell, const QPointF &pos, QQmlIncubator::IncubationMode incubationMode)
144 {
146 m_active = true;
147 m_edge = Qt::Edge(0);
148 m_mode = incubationMode;
149 m_edgeIndex = cell.x();
150 m_visibleCellsInEdge.clear();
151 m_visibleCellsInEdge.append(cell.y());
152 m_currentIndex = 0;
153 m_startPos = pos;
154 qCDebug(lcTableViewDelegateLifecycle()) << "begin top-left:" << toString();
155 }
156
157 void begin(Qt::Edge edgeToLoad, int edgeIndex, const QVector<int> visibleCellsInEdge, QQmlIncubator::IncubationMode incubationMode)
158 {
160 m_active = true;
161 m_edge = edgeToLoad;
162 m_edgeIndex = edgeIndex;
163 m_visibleCellsInEdge = visibleCellsInEdge;
164 m_mode = incubationMode;
165 m_currentIndex = 0;
166 qCDebug(lcTableViewDelegateLifecycle()) << "begin:" << toString();
167 }
168
169 inline void markAsDone() { m_active = false; }
170 inline bool isActive() const { return m_active; }
171
172 inline QPoint currentCell() const { return cellAt(m_currentIndex); }
173 inline bool hasCurrentCell() const { return m_currentIndex < m_visibleCellsInEdge.size(); }
174 inline void moveToNextCell() { ++m_currentIndex; }
175
176 inline Qt::Edge edge() const { return m_edge; }
177 inline int row() const { return cellAt(0).y(); }
178 inline int column() const { return cellAt(0).x(); }
179 inline QQmlIncubator::IncubationMode incubationMode() const { return m_mode; }
180
181 inline QPointF startPosition() const { return m_startPos; }
182
184 {
185 QString str;
186 QDebug dbg(&str);
187 dbg.nospace() << "TableSectionLoadRequest(" << "edge:"
188 << m_edge << ", edgeIndex:" << m_edgeIndex << ", incubation:";
189
190 switch (m_mode) {
192 dbg << "Asynchronous";
193 break;
195 dbg << "AsynchronousIfNested";
196 break;
198 dbg << "Synchronous";
199 break;
200 }
201
202 return str;
203 }
204
205 private:
206 Qt::Edge m_edge = Qt::Edge(0);
207 QVector<int> m_visibleCellsInEdge;
208 int m_edgeIndex = 0;
209 int m_currentIndex = 0;
210 bool m_active = false;
212 QPointF m_startPos;
213
214 inline QPoint cellAt(int index) const {
215 return !m_edge || (m_edge & (Qt::LeftEdge | Qt::RightEdge))
216 ? QPoint(m_edgeIndex, m_visibleCellsInEdge[index])
217 : QPoint(m_visibleCellsInEdge[index], m_edgeIndex);
218 }
219 };
220
221 class EdgeRange {
222 public:
223 EdgeRange();
224 bool containsIndex(Qt::Edge edge, int index);
225
229 };
230
231 enum class RebuildState {
232 Begin = 0,
233 LoadInitalTable,
234 VerifyTable,
235 LayoutTable,
236 CancelOvershoot,
237 UpdateContentSize,
238 PreloadColumns,
239 PreloadRows,
240 MovePreloadedItemsToPool,
241 Done
242 };
243
244 enum class RebuildOption {
245 None = 0,
246 All = 0x1,
247 LayoutOnly = 0x2,
248 ViewportOnly = 0x4,
249 CalculateNewTopLeftRow = 0x8,
250 CalculateNewTopLeftColumn = 0x10,
251 CalculateNewContentWidth = 0x20,
252 CalculateNewContentHeight = 0x40,
253 PositionViewAtRow = 0x80,
254 PositionViewAtColumn = 0x100,
255 };
256 Q_DECLARE_FLAGS(RebuildOptions, RebuildOption)
257
258public:
260 ~QQuickTableViewPrivate() override;
261
262 static inline QQuickTableViewPrivate *get(QQuickTableView *q) { return q->d_func(); }
263
264 void updatePolish() override;
265 void fixup(AxisData &data, qreal minExtent, qreal maxExtent) override;
266
267public:
268 QHash<int, FxTableItem *> loadedItems;
269
270 // model, tableModel and modelVariant all point to the same model. modelVariant
271 // is the model assigned by the user. And tableModel is the wrapper model we create
272 // around it. But if the model is an instance model directly, we cannot wrap it, so
273 // we need a pointer for that case as well.
275 QPointer<QQmlTableInstanceModel> tableModel = nullptr;
277
278 // When the applications assignes a new model or delegate to the view, we keep them
279 // around until we're ready to take them into use (syncWithPendingChanges).
280 QVariant assignedModel = QVariant(int(0));
281 QQmlGuard<QQmlComponent> assignedDelegate;
282
283 // loadedRows/Columns describes the rows and columns that are currently loaded (from top left
284 // row/column to bottom right row/column). loadedTableOuterRect describes the actual
285 // pixels that all the loaded delegate items cover, and is matched agains the viewport to determine when
286 // we need to fill up with more rows/columns. loadedTableInnerRect describes the pixels
287 // that the loaded table covers if you remove one row/column on each side of the table, and
288 // is used to determine rows/columns that are no longer visible and can be unloaded.
289 QMinimalFlatSet<int> loadedColumns;
290 QMinimalFlatSet<int> loadedRows;
293
294 QPointF origin = QPointF(0, 0);
295 QSizeF endExtent = QSizeF(0, 0);
296
297 QRectF viewportRect = QRectF(0, 0, -1, -1);
298
300
301 RebuildState rebuildState = RebuildState::Done;
302 RebuildOptions rebuildOptions = RebuildOption::All;
303 RebuildOptions scheduledRebuildOptions = RebuildOption::All;
304
306
307 QSizeF cellSpacing = QSizeF(0, 0);
308
310
311 bool blockItemCreatedCallback = false;
312 mutable bool layoutWarningIssued = false;
313 bool polishing = false;
314 bool syncVertically = false;
315 bool syncHorizontally = false;
316 bool inSetLocalViewportPos = false;
317 bool inSyncViewportPosRecursive = false;
318 bool inUpdateContentSize = false;
319 bool animate = true;
320 bool keyNavigationEnabled = true;
321 bool pointerNavigationEnabled = true;
322 bool alternatingRows = true;
323 bool resizableColumns = false;
324 bool resizableRows = false;
325#if QT_CONFIG(cursor)
326 bool m_cursorSet = false;
327#endif
328
329 // isTransposed is currently only used by HeaderView.
330 // Consider making it public.
331 bool isTransposed = false;
332
333 bool warnNoSelectionModel = true;
334
337
338 mutable EdgeRange cachedNextVisibleEdgeIndex[4];
341
342 // TableView uses contentWidth/height to report the size of the table (this
343 // will e.g make scrollbars written for Flickable work out of the box). This
344 // value is continuously calculated, and will change/improve as more columns
345 // are loaded into view. At the same time, we want to open up for the
346 // possibility that the application can set the content width explicitly, in
347 // case it knows what the exact width should be from the start. We therefore
348 // override the contentWidth/height properties from QQuickFlickable, to be able
349 // to implement this combined behavior. This also lets us lazy build the table
350 // if the application needs to know the content size early on.
351 QQmlNullableValue<qreal> explicitContentWidth;
352 QQmlNullableValue<qreal> explicitContentHeight;
353
355
356 QPointer<QQuickTableView> assignedSyncView;
357 QPointer<QQuickTableView> syncView;
358 QList<QPointer<QQuickTableView> > syncChildren;
359 Qt::Orientations assignedSyncDirection = Qt::Horizontal | Qt::Vertical;
360
361 QPointer<QItemSelectionModel> selectionModel;
366 bool inSelectionModelUpdate = false;
367
368 int assignedPositionViewAtRowAfterRebuild = 0;
369 int assignedPositionViewAtColumnAfterRebuild = 0;
370 int positionViewAtRowAfterRebuild = 0;
371 int positionViewAtColumnAfterRebuild = 0;
372 qreal positionViewAtRowOffset = 0;
373 qreal positionViewAtColumnOffset = 0;
376 Qt::Alignment positionViewAtRowAlignment = Qt::AlignTop;
377 Qt::Alignment positionViewAtColumnAlignment = Qt::AlignLeft;
378
381
382 QPoint selectionStartCell = {-1, -1};
383 QPoint selectionEndCell = {-1, -1};
385
388
389 int currentRow = -1;
390 int currentColumn = -1;
391
392 QHash<int, qreal> explicitColumnWidths;
393 QHash<int, qreal> explicitRowHeights;
394
395 QQuickTableViewHoverHandler *hoverHandler = nullptr;
396 QQuickTableViewResizeHandler *resizeHandler = nullptr;
397
398 QQmlTableInstanceModel *editModel = nullptr;
399 QQuickItem *editItem = nullptr;
401 QQuickTableView::EditTriggers editTriggers = QQuickTableView::DoubleTapped | QQuickTableView::EditKeyPressed;
402
403#ifdef QT_DEBUG
404 QString forcedIncubationMode = qEnvironmentVariable("QT_TABLEVIEW_INCUBATION_MODE");
405#endif
406
407public:
408 void init();
409
410 QQuickTableViewAttached *getAttachedObject(const QObject *object) const;
411
412 int modelIndexAtCell(const QPoint &cell) const;
413 QPoint cellAtModelIndex(int modelIndex) const;
414 int modelIndexToCellIndex(const QModelIndex &modelIndex) const;
415 inline bool cellIsValid(const QPoint &cell) const { return cell.x() != -1 && cell.y() != -1; }
416
417 qreal sizeHintForColumn(int column) const;
418 qreal sizeHintForRow(int row) const;
419 QSize calculateTableSize();
421
422 inline bool isColumnHidden(int column) const;
423 inline bool isRowHidden(int row) const;
424
425 qreal getColumnLayoutWidth(int column);
426 qreal getRowLayoutHeight(int row);
427 qreal getColumnWidth(int column) const;
428 qreal getRowHeight(int row) const;
429 qreal getEffectiveRowY(int row) const;
430 qreal getEffectiveRowHeight(int row) const;
431 qreal getEffectiveColumnX(int column) const;
432 qreal getEffectiveColumnWidth(int column) const;
433 qreal getAlignmentContentX(int column, Qt::Alignment alignment, const qreal offset, const QRectF &subRect);
434 qreal getAlignmentContentY(int row, Qt::Alignment alignment, const qreal offset, const QRectF &subRect);
435
436 int topRow() const { return *loadedRows.cbegin(); }
437 int bottomRow() const { return *loadedRows.crbegin(); }
438 int leftColumn() const { return *loadedColumns.cbegin(); }
439 int rightColumn() const { return *loadedColumns.crbegin(); }
440
441 QQuickTableView *rootSyncView() const;
442
443 bool updateTableRecursive();
444 bool updateTable();
445 void relayoutTableItems();
446
447 void layoutVerticalEdge(Qt::Edge tableEdge);
448 void layoutHorizontalEdge(Qt::Edge tableEdge);
449 void layoutTopLeftItem();
450 void layoutTableEdgeFromLoadRequest();
451
452 void updateContentWidth();
453 void updateContentHeight();
454 void updateAverageColumnWidth();
455 void updateAverageRowHeight();
456 RebuildOptions checkForVisibilityChanges();
457 void forceLayout(bool immediate);
458
459 void updateExtents();
460 void syncLoadedTableRectFromLoadedTable();
461 void syncLoadedTableFromLoadRequest();
462 void shiftLoadedTableRect(const QPointF newPosition);
463
464 int nextVisibleEdgeIndex(Qt::Edge edge, int startIndex) const;
465 int nextVisibleEdgeIndexAroundLoadedTable(Qt::Edge edge) const;
466 inline bool atTableEnd(Qt::Edge edge) const { return nextVisibleEdgeIndexAroundLoadedTable(edge) == kEdgeIndexAtEnd; }
467 inline bool atTableEnd(Qt::Edge edge, int startIndex) const { return nextVisibleEdgeIndex(edge, startIndex) == kEdgeIndexAtEnd; }
468 inline int edgeToArrayIndex(Qt::Edge edge) const;
469 void clearEdgeSizeCache();
470
471 bool canLoadTableEdge(Qt::Edge tableEdge, const QRectF fillRect) const;
472 bool canUnloadTableEdge(Qt::Edge tableEdge, const QRectF fillRect) const;
473 Qt::Edge nextEdgeToLoad(const QRectF rect);
474 Qt::Edge nextEdgeToUnload(const QRectF rect);
475
476 qreal cellWidth(const QPoint &cell) const;
477 qreal cellHeight(const QPoint &cell) const;
478
479 FxTableItem *loadedTableItem(const QPoint &cell) const;
480 FxTableItem *createFxTableItem(const QPoint &cell, QQmlIncubator::IncubationMode incubationMode);
481 FxTableItem *loadFxTableItem(const QPoint &cell, QQmlIncubator::IncubationMode incubationMode);
482
483 void releaseItem(FxTableItem *fxTableItem, QQmlTableInstanceModel::ReusableFlag reusableFlag);
484 void releaseLoadedItems(QQmlTableInstanceModel::ReusableFlag reusableFlag);
485
486 void unloadItem(const QPoint &cell);
487 void loadEdge(Qt::Edge edge, QQmlIncubator::IncubationMode incubationMode);
488 void unloadEdge(Qt::Edge edge);
489 void loadAndUnloadVisibleEdges(QQmlIncubator::IncubationMode incubationMode = QQmlIncubator::AsynchronousIfNested);
490 void drainReusePoolAfterLoadRequest();
491 void processLoadRequest();
492
493 void processRebuildTable();
494 bool moveToNextRebuildState();
495 void calculateTopLeft(QPoint &topLeft, QPointF &topLeftPos);
496 void loadInitialTable();
497
498 void layoutAfterLoadingInitialTable();
499 void adjustViewportXAccordingToAlignment();
500 void adjustViewportYAccordingToAlignment();
501 void cancelOvershootAfterLayout();
502
503 void scheduleRebuildTable(QQuickTableViewPrivate::RebuildOptions options);
504
505#if QT_CONFIG(cursor)
506 void updateCursor();
507#endif
508 void updateEditItem();
509 void updateContentSize();
510
511 QTypeRevision resolveImportVersion();
512 void createWrapperModel();
513 QAbstractItemModel *qaim(QVariant modelAsVariant) const;
514
515 virtual void initItemCallback(int modelIndex, QObject *item);
516 virtual void itemCreatedCallback(int modelIndex, QObject *object);
517 virtual void itemPooledCallback(int modelIndex, QObject *object);
518 virtual void itemReusedCallback(int modelIndex, QObject *object);
519 virtual void modelUpdated(const QQmlChangeSet &changeSet, bool reset);
520
521 virtual void syncWithPendingChanges();
522 virtual void syncDelegate();
523 virtual QVariant modelImpl() const;
524 virtual void setModelImpl(const QVariant &newModel);
525 virtual void syncModel();
526 virtual void syncSyncView();
527 virtual void syncPositionView();
528 virtual QAbstractItemModel *selectionSourceModel();
529 inline void syncRebuildOptions();
530
531 void connectToModel();
532 void disconnectFromModel();
533
534 void rowsMovedCallback(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int row);
535 void columnsMovedCallback(const QModelIndex &parent, int start, int end, const QModelIndex &destination, int column);
536 void rowsInsertedCallback(const QModelIndex &parent, int begin, int end);
537 void rowsRemovedCallback(const QModelIndex &parent, int begin, int end);
538 void columnsInsertedCallback(const QModelIndex &parent, int begin, int end);
539 void columnsRemovedCallback(const QModelIndex &parent, int begin, int end);
540 void layoutChangedCallback(const QList<QPersistentModelIndex> &parents, QAbstractItemModel::LayoutChangeHint hint);
541 void modelResetCallback();
542 bool compareModel(const QVariant& model1, const QVariant& model2) const;
543
544 void positionViewAtRow(int row, Qt::Alignment alignment, qreal offset, const QRectF subRect = QRectF());
545 void positionViewAtColumn(int column, Qt::Alignment alignment, qreal offset, const QRectF subRect = QRectF());
546 bool scrollToRow(int row, Qt::Alignment alignment, qreal offset, const QRectF subRect = QRectF());
547 bool scrollToColumn(int column, Qt::Alignment alignment, qreal offset, const QRectF subRect = QRectF());
548
549 void scheduleRebuildIfFastFlick();
550 void setLocalViewportX(qreal contentX);
551 void setLocalViewportY(qreal contentY);
552 void syncViewportRect();
553 void syncViewportPosRecursive();
554
555 bool selectedInSelectionModel(const QPoint &cell) const;
556 void selectionChangedInSelectionModel(const QItemSelection &selected, const QItemSelection &deselected);
557 void updateSelectedOnAllDelegateItems();
558 void setSelectedOnDelegateItem(const QModelIndex &modelIndex, bool select);
559
560 bool currentInSelectionModel(const QPoint &cell) const;
561 void currentChangedInSelectionModel(const QModelIndex &current, const QModelIndex &previous);
562 void setCurrentOnDelegateItem(const QModelIndex &index, bool isCurrent);
563 void updateCurrentRowAndColumn();
564
565 void fetchMoreData();
566
569
570 inline QString tableLayoutToString() const;
571 void dumpTable() const;
572
573 void setRequiredProperty(const char *property,
574 const QVariant &value,
575 int serializedModelIndex,
576 QObject *object, bool init);
577
578 void handleTap(const QQuickHandlerPoint &point);
579 void setCurrentIndexFromTap(const QPointF &pos);
580 void setCurrentIndex(const QPoint &cell);
581 bool setCurrentIndexFromKeyEvent(QKeyEvent *e);
582 bool canEdit(const QModelIndex tappedIndex, bool warn);
583 bool editFromKeyEvent(QKeyEvent *e);
584
585 // QQuickSelectable
586 QQuickItem *selectionPointerHandlerTarget() const override;
587 bool startSelection(const QPointF &pos, Qt::KeyboardModifiers modifiers) override;
588 void setSelectionStartPos(const QPointF &pos) override;
589 void setSelectionEndPos(const QPointF &pos) override;
590 void clearSelection() override;
591 void normalizeSelection() override;
592 QRectF selectionRectangle() const override;
593 QSizeF scrollTowardsSelectionPoint(const QPointF &pos, const QSizeF &step) override;
594 void setCallback(std::function<void(CallBackFlag)> func) override;
595 void cancelSelectionTracking();
596
597 QPoint clampedCellAtPos(const QPointF &pos) const;
598 virtual void updateSelection(const QRect &oldSelection, const QRect &newSelection);
599 QRect selection() const;
600 // ----------------
601};
602
604{
605public:
610
611 qreal position() const override { return 0; }
612 qreal endPosition() const override { return 0; }
613 qreal size() const override { return 0; }
614 qreal sectionSize() const override { return 0; }
615 bool contains(qreal, qreal) const override { return false; }
616
618};
619
620Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickTableViewPrivate::RebuildOptions)
621
623
624#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]