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
qtablewidget_p.h
Go to the documentation of this file.
1// Copyright (C) 2016 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 QTABLEWIDGET_P_H
5#define QTABLEWIDGET_P_H
6
7//
8// W A R N I N G
9// -------------
10//
11// This file is not part of the Qt API. This header file may change
12// from version to version without notice, or even be removed.
13//
14// We mean it.
15//
16
17#include <QtWidgets/private/qtwidgetsglobal_p.h>
18#include <qheaderview.h>
19#include <qtablewidget.h>
20#include <qabstractitemmodel.h>
21#include <private/qabstractitemmodel_p.h>
22#include <private/qtableview_p.h>
23#include <private/qwidgetitemdata_p.h>
24
25#include <array>
26
27QT_REQUIRE_CONFIG(tablewidget);
28
30
32{
34public:
35 QList<QTableWidgetItem*> items;
36};
37
39{
40public:
41 inline bool operator()(QTableWidgetItem *i1, QTableWidgetItem *i2) const
42 { return (*i1 < *i2); }
43};
44
46{
47public:
48 inline bool operator()(QTableWidgetItem *i1, QTableWidgetItem *i2) const
49 { return (*i2 < *i1); }
50};
51
53{
55 friend class QTableWidget;
56
57public:
58 QTableModel(int rows, int columns, QTableWidget *parent);
60
61 bool insertRows(int row, int count = 1, const QModelIndex &parent = QModelIndex()) override;
62 bool insertColumns(int column, int count = 1, const QModelIndex &parent = QModelIndex()) override;
63
64 bool removeRows(int row, int count = 1, const QModelIndex &parent = QModelIndex()) override;
65 bool removeColumns(int column, int count = 1, const QModelIndex &parent = QModelIndex()) override;
66
67 void setItem(int row, int column, QTableWidgetItem *item);
69 QTableWidgetItem *item(int row, int column) const;
72
79
80 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override
82
84
85 void setRowCount(int rows);
86 void setColumnCount(int columns);
87
88 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
89 int columnCount(const QModelIndex &parent = QModelIndex()) const override;
90
91 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
92 bool setData(const QModelIndex &index, const QVariant &value, int role) override;
93 bool setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles) override;
94 bool clearItemData(const QModelIndex &index) override;
95
96 QMap<int, QVariant> itemData(const QModelIndex &index) const override;
97
98 QVariant headerData(int section, Qt::Orientation orientation, int role) const override;
99 bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role) override;
100
101 Qt::ItemFlags flags(const QModelIndex &index) const override;
102
103 void sort(int column, Qt::SortOrder order) override;
104 static bool itemLessThan(const QPair<QTableWidgetItem*,int> &left,
105 const QPair<QTableWidgetItem*,int> &right);
106 static bool itemGreaterThan(const QPair<QTableWidgetItem*,int> &left,
107 const QPair<QTableWidgetItem*,int> &right);
108
109 void ensureSorted(int column, Qt::SortOrder order, int start, int end);
110 QList<QTableWidgetItem *> columnItems(int column) const;
111 void updateRowIndexes(QModelIndexList &indexes, int movedFromRow, int movedToRow);
116
117 bool isValid(const QModelIndex &index) const;
118 inline long tableIndex(int row, int column) const
119 { return (row * horizontalHeaderItems.size()) + column; }
120
121 void clear();
122 void clearContents();
123 void itemChanged(QTableWidgetItem *item, const QList<int> &roles = QList<int>());
124
126 const QTableWidgetItem *itemPrototype() const;
128
129 // dnd
130 QStringList mimeTypes() const override;
131 QMimeData *mimeData(const QModelIndexList &indexes) const override;
132 bool dropMimeData(const QMimeData *data, Qt::DropAction action,
133 int row, int column, const QModelIndex &parent) override;
134 Qt::DropActions supportedDropActions() const override;
135
137
138private:
139 const QTableWidgetItem *prototype;
140 QList<QTableWidgetItem *> tableItems;
141 QList<QTableWidgetItem *> verticalHeaderItems;
142 QList<QTableWidgetItem *> horizontalHeaderItems;
143
144 // A cache must be mutable if get-functions should have const modifiers
145 mutable QModelIndexList cachedIndexes;
146};
147
149{
150 Q_DECLARE_PUBLIC(QTableWidget)
151public:
153 inline QTableModel *tableModel() const { return qobject_cast<QTableModel*>(model); }
154 void setup();
155 void clearConnections();
156
157 // view signals
158 void emitItemPressed(const QModelIndex &index);
159 void emitItemClicked(const QModelIndex &index);
162 void emitItemEntered(const QModelIndex &index);
163 // model signals
164 void emitItemChanged(const QModelIndex &index);
165 // selection signals
166 void emitCurrentItemChanged(const QModelIndex &previous, const QModelIndex &current);
167 // sorting
168 void sort();
169 void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
170
171 std::array<QMetaObject::Connection, 10> connections;
172};
173
175{
176public:
179 int id;
180 bool headerItem; // Qt 7 TODO: inline this stuff in the public class.
181};
182
184
185#endif // QTABLEWIDGET_P_H
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
Returns the index of the data in row and column with parent.
QObject * parent() const
Returns a pointer to the parent object.
Definition qobject.h:346
qsizetype size() const noexcept
Definition qlist.h:397
\inmodule QtCore
Definition qmimedata.h:16
\inmodule QtCore
\inmodule QtCore
bool operator()(QTableWidgetItem *i1, QTableWidgetItem *i2) const
bool operator()(QTableWidgetItem *i1, QTableWidgetItem *i2) const
void removeItem(QTableWidgetItem *item)
static bool itemLessThan(const QPair< QTableWidgetItem *, int > &left, const QPair< QTableWidgetItem *, int > &right)
void setRowCount(int rows)
int columnCount(const QModelIndex &parent=QModelIndex()) const override
Returns the number of columns for the children of the given parent.
QTableWidgetItem * verticalHeaderItem(int section)
void setVerticalHeaderItem(int section, QTableWidgetItem *item)
bool clearItemData(const QModelIndex &index) override
void ensureSorted(int column, Qt::SortOrder order, int start, int end)
bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role) override
Sets the data for the given role and section in the header with the specified orientation to the valu...
void setItemPrototype(const QTableWidgetItem *item)
int rowCount(const QModelIndex &parent=QModelIndex()) const override
Returns the number of rows under the given parent.
QMap< int, QVariant > itemData(const QModelIndex &index) const override
Returns a map with values for all predefined roles in the model for the item at the given index.
QTableWidgetItem * takeHorizontalHeaderItem(int section)
void setItem(int row, int column, QTableWidgetItem *item)
bool insertRows(int row, int count=1, const QModelIndex &parent=QModelIndex()) override
QStringList mimeTypes() const override
Returns the list of allowed MIME types.
QVariant headerData(int section, Qt::Orientation orientation, int role) const override
Returns the data for the given role and section in the header with the specified orientation.
bool dropMimeData(const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override
\reimp
bool isValid(const QModelIndex &index) const
QTableWidgetItem * createItem() const
QModelIndex index(int row, int column, const QModelIndex &parent=QModelIndex()) const override
Returns the index of the data in row and column with parent.
static QList< QTableWidgetItem * >::iterator sortedInsertionIterator(const QList< QTableWidgetItem * >::iterator &begin, const QList< QTableWidgetItem * >::iterator &end, Qt::SortOrder order, QTableWidgetItem *item)
QTableWidgetItem * horizontalHeaderItem(int section)
void setHorizontalHeaderItem(int section, QTableWidgetItem *item)
void itemChanged(QTableWidgetItem *item, const QList< int > &roles=QList< int >())
QMimeData * internalMimeData() const
const QTableWidgetItem * itemPrototype() const
bool insertColumns(int column, int count=1, const QModelIndex &parent=QModelIndex()) override
bool setData(const QModelIndex &index, const QVariant &value, int role) override
Sets the role data for the item at index to value.
bool removeColumns(int column, int count=1, const QModelIndex &parent=QModelIndex()) override
QTableWidgetItem * takeItem(int row, int column)
void setColumnCount(int columns)
bool setItemData(const QModelIndex &index, const QMap< int, QVariant > &roles) override
Sets the role data for the item at index to the associated value in roles, for every Qt::ItemDataRole...
void sort(int column, Qt::SortOrder order) override
static bool itemGreaterThan(const QPair< QTableWidgetItem *, int > &left, const QPair< QTableWidgetItem *, int > &right)
bool removeRows(int row, int count=1, const QModelIndex &parent=QModelIndex()) override
long tableIndex(int row, int column) const
QTableModel(int rows, int columns, QTableWidget *parent)
QList< QTableWidgetItem * > columnItems(int column) const
void updateRowIndexes(QModelIndexList &indexes, int movedFromRow, int movedToRow)
void clearContents()
Qt::DropActions supportedDropActions() const override
QTableWidgetItem * takeVerticalHeaderItem(int section)
QTableWidgetItemPrivate(QTableWidgetItem *item)
QTableWidgetItem * q
The QTableWidgetItem class provides an item for use with the QTableWidget class.
QList< QTableWidgetItem * > items
void emitItemPressed(const QModelIndex &index)
void emitCurrentItemChanged(const QModelIndex &previous, const QModelIndex &current)
void emitItemActivated(const QModelIndex &index)
void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
void emitItemClicked(const QModelIndex &index)
std::array< QMetaObject::Connection, 10 > connections
QTableModel * tableModel() const
void emitItemDoubleClicked(const QModelIndex &index)
void emitItemChanged(const QModelIndex &index)
void emitItemEntered(const QModelIndex &index)
The QTableWidget class provides an item-based table view with a default model.
\inmodule QtCore
Definition qvariant.h:65
Combined button and popup list for selecting options.
Orientation
Definition qnamespace.h:98
@ DisplayRole
SortOrder
Definition qnamespace.h:121
DropAction
EGLOutputLayerEXT EGLint EGLAttrib value
[5]
GLuint index
[2]
GLuint GLuint end
GLenum GLuint id
[7]
GLenum GLenum GLsizei count
GLdouble GLdouble right
GLint GLsizei GLsizei GLenum GLenum GLsizei void * data
GLint left
GLbitfield flags
GLuint start
GLenum GLenum GLsizei void GLsizei void * column
GLdouble GLdouble GLdouble GLdouble q
Definition qopenglext.h:259
GLenum GLenum GLsizei void * row
GLfixed GLfixed GLint GLint order
QtPrivate::QRegularExpressionMatchIteratorRangeBasedForIterator begin(const QRegularExpressionMatchIterator &iterator)
#define QT_REQUIRE_CONFIG(feature)
#define Q_OBJECT
QMimeData * mimeData
QGraphicsItem * item