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.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_H
5#define QQUICKTABLEVIEW_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 <private/qtquickglobal_p.h>
19QT_REQUIRE_CONFIG(quick_tableview);
20
21#include <QtCore/qpointer.h>
22#include <QtQuick/private/qtquickglobal_p.h>
23#include <QtQuick/private/qquickflickable_p.h>
24#include <QtQml/private/qqmlnullablevalue_p.h>
25#include <QtQml/private/qqmlfinalizer_p.h>
26#include <QtQml/private/qqmlguard_p.h>
27
29
33
34class Q_QUICK_EXPORT QQuickTableView : public QQuickFlickable, public QQmlFinalizerHook
35{
38
39 Q_PROPERTY(int rows READ rows NOTIFY rowsChanged)
40 Q_PROPERTY(int columns READ columns NOTIFY columnsChanged)
41 Q_PROPERTY(qreal rowSpacing READ rowSpacing WRITE setRowSpacing NOTIFY rowSpacingChanged)
42 Q_PROPERTY(qreal columnSpacing READ columnSpacing WRITE setColumnSpacing NOTIFY columnSpacingChanged)
43 Q_PROPERTY(QJSValue rowHeightProvider READ rowHeightProvider WRITE setRowHeightProvider NOTIFY rowHeightProviderChanged)
44 Q_PROPERTY(QJSValue columnWidthProvider READ columnWidthProvider WRITE setColumnWidthProvider NOTIFY columnWidthProviderChanged)
45 Q_PROPERTY(QVariant model READ model WRITE setModel NOTIFY modelChanged)
46 Q_PROPERTY(QQmlComponent *delegate READ delegate WRITE setDelegate NOTIFY delegateChanged)
47 Q_PROPERTY(bool reuseItems READ reuseItems WRITE setReuseItems NOTIFY reuseItemsChanged)
48 Q_PROPERTY(qreal contentWidth READ contentWidth WRITE setContentWidth NOTIFY contentWidthChanged)
49 Q_PROPERTY(qreal contentHeight READ contentHeight WRITE setContentHeight NOTIFY contentHeightChanged)
50 Q_PROPERTY(QQuickTableView *syncView READ syncView WRITE setSyncView NOTIFY syncViewChanged REVISION(2, 14))
51 Q_PROPERTY(Qt::Orientations syncDirection READ syncDirection WRITE setSyncDirection NOTIFY syncDirectionChanged REVISION(2, 14))
52 Q_PROPERTY(int leftColumn READ leftColumn NOTIFY leftColumnChanged REVISION(6, 0))
53 Q_PROPERTY(int rightColumn READ rightColumn NOTIFY rightColumnChanged REVISION(6, 0))
54 Q_PROPERTY(int topRow READ topRow NOTIFY topRowChanged REVISION(6, 0))
55 Q_PROPERTY(int bottomRow READ bottomRow NOTIFY bottomRowChanged REVISION(6, 0))
56 Q_PROPERTY(QItemSelectionModel *selectionModel READ selectionModel WRITE setSelectionModel NOTIFY selectionModelChanged REVISION(6, 2))
57 Q_PROPERTY(bool animate READ animate WRITE setAnimate NOTIFY animateChanged REVISION(6, 4))
58 Q_PROPERTY(bool keyNavigationEnabled READ keyNavigationEnabled WRITE setKeyNavigationEnabled NOTIFY keyNavigationEnabledChanged REVISION(6, 4))
59 Q_PROPERTY(bool pointerNavigationEnabled READ pointerNavigationEnabled WRITE setPointerNavigationEnabled NOTIFY pointerNavigationEnabledChanged REVISION(6, 4))
60 Q_PROPERTY(int currentRow READ currentRow NOTIFY currentRowChanged REVISION(6, 4) FINAL)
61 Q_PROPERTY(int currentColumn READ currentColumn NOTIFY currentColumnChanged REVISION(6, 4) FINAL)
62 Q_PROPERTY(bool alternatingRows READ alternatingRows WRITE setAlternatingRows NOTIFY alternatingRowsChanged REVISION(6, 4) FINAL)
63 Q_PROPERTY(SelectionBehavior selectionBehavior READ selectionBehavior WRITE setSelectionBehavior NOTIFY selectionBehaviorChanged REVISION(6, 4) FINAL)
64 Q_PROPERTY(bool resizableColumns READ resizableColumns WRITE setResizableColumns NOTIFY resizableColumnsChanged REVISION(6, 5) FINAL)
65 Q_PROPERTY(bool resizableRows READ resizableRows WRITE setResizableRows NOTIFY resizableRowsChanged REVISION(6, 5) FINAL)
66 Q_PROPERTY(EditTriggers editTriggers READ editTriggers WRITE setEditTriggers NOTIFY editTriggersChanged REVISION(6, 5) FINAL)
67 Q_PROPERTY(SelectionMode selectionMode READ selectionMode WRITE setSelectionMode NOTIFY selectionModeChanged REVISION(6, 6) FINAL)
68
69 QML_NAMED_ELEMENT(TableView)
72
73public:
75 AlignLeft = Qt::AlignLeft,
76 AlignRight = Qt::AlignRight,
77 AlignHCenter = Qt::AlignHCenter,
78 AlignTop = Qt::AlignTop,
79 AlignBottom = Qt::AlignBottom,
80 AlignVCenter = Qt::AlignVCenter,
81 AlignCenter = AlignVCenter | AlignHCenter,
82 Visible = 0x01000,
83 Contain = 0x02000
84 };
85 Q_DECLARE_FLAGS(PositionMode, PositionModeFlag)
86 Q_FLAG(PositionMode)
87
94 Q_ENUM(SelectionBehavior)
95
101 Q_ENUM(SelectionMode)
102
104 NoEditTriggers = 0x0,
105 SingleTapped = 0x1,
106 DoubleTapped = 0x2,
107 SelectedTapped = 0x4,
108 EditKeyPressed = 0x8,
109 AnyKeyPressed = 0x10,
110 };
111 Q_DECLARE_FLAGS(EditTriggers, EditTrigger)
112 Q_FLAG(EditTriggers)
113
114 QQuickTableView(QQuickItem *parent = nullptr);
115 ~QQuickTableView() override;
116 int rows() const;
117 int columns() const;
118
119 qreal rowSpacing() const;
120 void setRowSpacing(qreal spacing);
121
122 qreal columnSpacing() const;
123 void setColumnSpacing(qreal spacing);
124
125 QJSValue rowHeightProvider() const;
126 void setRowHeightProvider(const QJSValue &provider);
127
128 QJSValue columnWidthProvider() const;
129 void setColumnWidthProvider(const QJSValue &provider);
130
131 QVariant model() const;
132 void setModel(const QVariant &newModel);
133
134 QQmlComponent *delegate() const;
135 void setDelegate(QQmlComponent *);
136
137 bool reuseItems() const;
138 void setReuseItems(bool reuseItems);
139
140 void setContentWidth(qreal width);
141 void setContentHeight(qreal height);
142
143 QQuickTableView *syncView() const;
144 void setSyncView(QQuickTableView *view);
145
146 Qt::Orientations syncDirection() const;
147 void setSyncDirection(Qt::Orientations direction);
148
149 QItemSelectionModel *selectionModel() const;
150 void setSelectionModel(QItemSelectionModel *selectionModel);
151
152 bool animate() const;
153 void setAnimate(bool animate);
154
155 bool keyNavigationEnabled() const;
156 void setKeyNavigationEnabled(bool enabled);
157 bool pointerNavigationEnabled() const;
158 void setPointerNavigationEnabled(bool enabled);
159
160 int leftColumn() const;
161 int rightColumn() const;
162 int topRow() const;
163 int bottomRow() const;
164
165 int currentRow() const;
166 int currentColumn() const;
167
168 bool alternatingRows() const;
169 void setAlternatingRows(bool alternatingRows);
170
171 SelectionBehavior selectionBehavior() const;
172 void setSelectionBehavior(SelectionBehavior selectionBehavior);
173 SelectionMode selectionMode() const;
174 void setSelectionMode(SelectionMode selectionMode);
175
176 bool resizableColumns() const;
177 void setResizableColumns(bool enabled);
178
179 bool resizableRows() const;
180 void setResizableRows(bool enabled);
181
182 EditTriggers editTriggers() const;
183 void setEditTriggers(EditTriggers editTriggers);
184
185 Q_INVOKABLE void forceLayout();
186 Q_INVOKABLE void positionViewAtCell(const QPoint &cell, PositionMode mode, const QPointF &offset = QPointF(), const QRectF &subRect = QRectF());
187 Q_INVOKABLE void positionViewAtIndex(const QModelIndex &index, PositionMode mode, const QPointF &offset = QPointF(), const QRectF &subRect = QRectF());
188 Q_INVOKABLE void positionViewAtRow(int row, PositionMode mode, qreal offset = 0, const QRectF &subRect = QRectF());
189 Q_INVOKABLE void positionViewAtColumn(int column, PositionMode mode, qreal offset = 0, const QRectF &subRect = QRectF());
190 Q_INVOKABLE QQuickItem *itemAtCell(const QPoint &cell) const;
191
192 Q_REVISION(6, 4) Q_INVOKABLE QPoint cellAtPosition(const QPointF &position, bool includeSpacing = false) const;
193 Q_REVISION(6, 4) Q_INVOKABLE QPoint cellAtPosition(qreal x, qreal y, bool includeSpacing = false) const;
194#if QT_DEPRECATED_SINCE(6, 4)
195 QT_DEPRECATED_VERSION_X_6_4("Use index(row, column) instead")
196 Q_REVISION(6, 4) Q_INVOKABLE virtual QModelIndex modelIndex(int row, int column) const;
197 QT_DEPRECATED_VERSION_X_6_4("Use cellAtPosition() instead")
198 Q_INVOKABLE QPoint cellAtPos(const QPointF &position, bool includeSpacing = false) const;
199 Q_INVOKABLE QPoint cellAtPos(qreal x, qreal y, bool includeSpacing = false) const;
200#endif
201
202 Q_REVISION(6, 2) Q_INVOKABLE bool isColumnLoaded(int column) const;
203 Q_REVISION(6, 2) Q_INVOKABLE bool isRowLoaded(int row) const;
204
205 Q_REVISION(6, 2) Q_INVOKABLE qreal columnWidth(int column) const;
206 Q_REVISION(6, 2) Q_INVOKABLE qreal rowHeight(int row) const;
207 Q_REVISION(6, 2) Q_INVOKABLE qreal implicitColumnWidth(int column) const;
208 Q_REVISION(6, 2) Q_INVOKABLE qreal implicitRowHeight(int row) const;
209
211 Q_REVISION(6, 4) Q_INVOKABLE virtual QModelIndex modelIndex(const QPoint &cell) const;
212 Q_REVISION(6, 4) Q_INVOKABLE virtual QPoint cellAtIndex(const QModelIndex &index) const;
213 Q_REVISION(6, 4) Q_INVOKABLE int rowAtIndex(const QModelIndex &index) const;
214 Q_REVISION(6, 4) Q_INVOKABLE int columnAtIndex(const QModelIndex &index) const;
215
216 Q_REVISION(6, 5) Q_INVOKABLE void setColumnWidth(int column, qreal size);
217 Q_REVISION(6, 5) Q_INVOKABLE void clearColumnWidths();
218 Q_REVISION(6, 5) Q_INVOKABLE qreal explicitColumnWidth(int column) const;
219
220 Q_REVISION(6, 5) Q_INVOKABLE void setRowHeight(int row, qreal size);
221 Q_REVISION(6, 5) Q_INVOKABLE void clearRowHeights();
222 Q_REVISION(6, 5) Q_INVOKABLE qreal explicitRowHeight(int row) const;
223
225 Q_REVISION(6, 5) Q_INVOKABLE void closeEditor();
226
227 Q_REVISION(6, 5) Q_INVOKABLE QQuickItem *itemAtIndex(const QModelIndex &index) const;
228
229#if QT_DEPRECATED_SINCE(6, 5)
230 QT_DEPRECATED_VERSION_X_6_5("Use itemAtIndex(index(row, column)) instead")
231 Q_INVOKABLE QQuickItem *itemAtCell(int column, int row) const;
232 QT_DEPRECATED_VERSION_X_6_5("Use positionViewAtIndex(index(row, column)) instead")
233 Q_INVOKABLE void positionViewAtCell(int column, int row, PositionMode mode, const QPointF &offset = QPointF(), const QRectF &subRect = QRectF());
234#endif
235
236 Q_REVISION(6, 8) Q_INVOKABLE void moveColumn(int source, int destination);
237 Q_REVISION(6, 8) Q_INVOKABLE void moveRow(int source, int destination);
238 Q_REVISION(6, 8) Q_INVOKABLE void clearColumnReordering();
239 Q_REVISION(6, 8) Q_INVOKABLE void clearRowReordering();
240
241 static QQuickTableViewAttached *qmlAttachedProperties(QObject *);
242
244 void rowsChanged();
245 void columnsChanged();
246 void rowSpacingChanged();
247 void columnSpacingChanged();
248 void rowHeightProviderChanged();
249 void columnWidthProviderChanged();
250 void modelChanged();
251 void delegateChanged();
252 void reuseItemsChanged();
253 Q_REVISION(2, 14) void syncViewChanged();
254 Q_REVISION(2, 14) void syncDirectionChanged();
255 Q_REVISION(6, 0) void leftColumnChanged();
256 Q_REVISION(6, 0) void rightColumnChanged();
257 Q_REVISION(6, 0) void topRowChanged();
258 Q_REVISION(6, 0) void bottomRowChanged();
259 Q_REVISION(6, 2) void selectionModelChanged();
260 Q_REVISION(6, 4) void animateChanged();
261 Q_REVISION(6, 4) void keyNavigationEnabledChanged();
262 Q_REVISION(6, 4) void pointerNavigationEnabledChanged();
263 Q_REVISION(6, 4) void currentRowChanged();
264 Q_REVISION(6, 4) void currentColumnChanged();
265 Q_REVISION(6, 4) void alternatingRowsChanged();
266 Q_REVISION(6, 4) void selectionBehaviorChanged();
267 Q_REVISION(6, 5) void resizableColumnsChanged();
268 Q_REVISION(6, 5) void resizableRowsChanged();
269 Q_REVISION(6, 5) void editTriggersChanged();
270 Q_REVISION(6, 5) void layoutChanged();
271 Q_REVISION(6, 6) void selectionModeChanged();
272 Q_REVISION(6, 8) void rowMoved(int logicalIndex, int oldVisualIndex, int newVisualIndex);
273 Q_REVISION(6, 8) void columnMoved(int logicalIndex, int oldVisualIndex, int newVisualIndex);
274
275
276protected:
277 void geometryChange(const QRectF &newGeometry, const QRectF &oldGeometry) override;
278 void viewportMoved(Qt::Orientations orientation) override;
279 void keyPressEvent(QKeyEvent *e) override;
280 bool eventFilter(QObject *obj, QEvent *event) override;
281
282protected:
284 // QQmlFinalizerHook interface
285 void componentFinalized() override;
286
287private:
288 Q_DISABLE_COPY(QQuickTableView)
289 Q_DECLARE_PRIVATE(QQuickTableView)
290
291 qreal minXExtent() const override;
292 qreal maxXExtent() const override;
293 qreal minYExtent() const override;
294 qreal maxYExtent() const override;
295};
296
297class Q_QUICK_EXPORT QQuickTableViewAttached : public QObject
298{
300 Q_PROPERTY(QQuickTableView *view READ view NOTIFY viewChanged FINAL)
301 Q_PROPERTY(QQmlComponent *editDelegate READ editDelegate WRITE setEditDelegate NOTIFY editDelegateChanged FINAL)
302
303public:
305 : QObject(parent) {}
306
307 QQuickTableView *view() const { return m_view; }
308 void setView(QQuickTableView *newTableView) {
309 if (newTableView == m_view)
310 return;
311 m_view = newTableView;
312 Q_EMIT viewChanged();
313 }
314
315 QQmlComponent *editDelegate() const { return m_editDelegate; }
316 void setEditDelegate(QQmlComponent *newEditDelegate)
317 {
318 if (m_editDelegate == newEditDelegate)
319 return;
320 m_editDelegate = newEditDelegate;
321 Q_EMIT editDelegateChanged();
322 }
323
326 void pooled();
327 void reused();
329 void commit();
330
331private:
332 QPointer<QQuickTableView> m_view;
333 QQmlGuard<QQmlComponent> m_editDelegate;
334
336};
337
338Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickTableView::PositionMode)
339Q_DECLARE_OPERATORS_FOR_FLAGS(QQuickTableView::EditTriggers)
340
342
343#endif // QQUICKTABLEVIEW_P_H
\inmodule QtCore
Definition qcoreevent.h:45
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
\inmodule QtCore
Definition qobject.h:103
\inmodule QtCore\reentrant
Definition qpoint.h:217
\inmodule QtCore\reentrant
Definition qpoint.h:25
The QQmlComponent class encapsulates a QML component definition.
The QQuickItem class provides the most basic of all visual items in \l {Qt Quick}.
Definition qquickitem.h:63
void setView(QQuickTableView *newTableView)
QQmlComponent * editDelegate() const
QQuickTableView * view() const
void setEditDelegate(QQmlComponent *newEditDelegate)
Q_REVISION(6, 2) Q_INVOKABLE bool isColumnLoaded(int column) const
\inmodule QtCore\reentrant
Definition qrect.h:484
\inmodule QtCore
Definition qvariant.h:65
qreal spacing
direction
Combined button and popup list for selecting options.
Definition qcompare.h:63
@ AlignRight
Definition qnamespace.h:146
@ AlignBottom
Definition qnamespace.h:154
@ AlignVCenter
Definition qnamespace.h:155
@ AlignTop
Definition qnamespace.h:153
@ AlignHCenter
Definition qnamespace.h:148
@ AlignLeft
Definition qnamespace.h:144
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
#define Q_DECLARE_FLAGS(Flags, Enum)
Definition qflags.h:174
#define Q_DECLARE_OPERATORS_FOR_FLAGS(Flags)
Definition qflags.h:194
GLint GLint GLint GLint GLint x
[0]
GLenum mode
GLint GLsizei GLsizei height
GLenum GLuint GLintptr GLsizeiptr size
[1]
GLuint index
[2]
GLenum GLenum GLsizei const GLuint GLboolean enabled
GLint GLsizei width
GLenum GLuint GLintptr offset
GLint y
GLsizei GLsizei GLchar * source
GLenum GLenum GLsizei void GLsizei void * column
struct _cl_event * event
GLhandleARB obj
[2]
GLenum GLenum GLsizei void * row
#define QML_NAMED_ELEMENT(NAME)
#define QML_ADDED_IN_VERSION(MAJOR, MINOR)
#define QML_ATTACHED(ATTACHED_TYPE)
static qreal position(const QQuickItem *item, QQuickAnchors::Anchor anchorLine)
#define QT_REQUIRE_CONFIG(feature)
#define QT_DEPRECATED_VERSION_X_6_5(text)
#define QT_DEPRECATED_VERSION_X_6_4(text)
#define Q_ENUM(x)
#define Q_PROPERTY(...)
#define Q_OBJECT
#define Q_REVISION(...)
#define Q_FLAG(x)
#define Q_EMIT
#define Q_INVOKABLE
#define Q_INTERFACES(x)
#define Q_SIGNALS
double qreal
Definition qtypes.h:187
view setModel(model)
[17] //! [18]
QSqlQueryModel * model
[16]
view setEditTriggers(QAbstractItemView::NoEditTriggers)
[16] //! [19] //! [20]
QQuickView * view
[0]