Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qlistwidget_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// Qt-Security score:significant reason:default
4
5#ifndef QLISTWIDGET_P_H
6#define QLISTWIDGET_P_H
7
8//
9// W A R N I N G
10// -------------
11//
12// This file is not part of the Qt API. This header file may change
13// from version to version without notice, or even be removed.
14//
15// We mean it.
16//
17
18#include <QtWidgets/private/qtwidgetsglobal_p.h>
19#include <QtCore/qabstractitemmodel.h>
20#include <QtWidgets/qabstractitemview.h>
21#include <QtWidgets/qlistwidget.h>
22#include <private/qlistview_p.h>
23#include <private/qwidgetitemdata_p.h>
24
25#include <array>
26
28
29QT_BEGIN_NAMESPACE
30
31class QListModelLessThan
32{
33public:
34 inline bool operator()(QListWidgetItem *i1, QListWidgetItem *i2) const
35 { return *i1 < *i2; }
36};
37
39{
40public:
41 inline bool operator()(QListWidgetItem *i1, QListWidgetItem *i2) const
42 { return *i2 < *i1; }
43};
44
45class Q_AUTOTEST_EXPORT QListModel : public QAbstractListModel
46{
47 Q_OBJECT
48 friend class QListWidget;
49
50public:
51 QListModel(QListWidget *parent);
52 ~QListModel();
53
54 inline QListWidget *view() const { return qobject_cast<QListWidget *>(QObject::parent()); }
55
56 void clear();
57 QListWidgetItem *at(int row) const;
58 void insert(int row, QListWidgetItem *item);
59 void insert(int row, const QStringList &items);
60 void remove(QListWidgetItem *item);
61 QListWidgetItem *take(int row);
62 void move(int srcRow, int dstRow);
63
64 int rowCount(const QModelIndex &parent = QModelIndex()) const override;
65
66 QModelIndex index(const QListWidgetItem *item) const;
67 QModelIndex index(int row, int column = 0, const QModelIndex &parent = QModelIndex()) const override;
68
69 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
70 bool setData(const QModelIndex &index, const QVariant &value, int role) override;
71 bool clearItemData(const QModelIndex &index) override;
72
73 QMap<int, QVariant> itemData(const QModelIndex &index) const override;
74
75 bool insertRows(int row, int count = 1, const QModelIndex &parent = QModelIndex()) override;
76 bool removeRows(int row, int count = 1, const QModelIndex &parent = QModelIndex()) override;
77 bool moveRows(const QModelIndex &sourceParent, int sourceRow, int count, const QModelIndex &destinationParent, int destinationChild) override;
78
79 Qt::ItemFlags flags(const QModelIndex &index) const override;
80
81 void sort(int column, Qt::SortOrder order) override;
82 void ensureSorted(int column, Qt::SortOrder order, int start, int end);
83 static bool itemLessThan(const std::pair<QListWidgetItem*,int> &left,
84 const std::pair<QListWidgetItem*,int> &right);
85 static bool itemGreaterThan(const std::pair<QListWidgetItem*,int> &left,
86 const std::pair<QListWidgetItem*,int> &right);
87 static QList<QListWidgetItem*>::iterator sortedInsertionIterator(
88 const QList<QListWidgetItem*>::iterator &begin,
89 const QList<QListWidgetItem*>::iterator &end,
90 Qt::SortOrder order, QListWidgetItem *item);
91
92 void itemChanged(QListWidgetItem *item, const QList<int> &roles = QList<int>());
93
94 // dnd
95 QStringList mimeTypes() const override;
96 QMimeData *mimeData(const QModelIndexList &indexes) const override;
97#if QT_CONFIG(draganddrop)
98 bool dropMimeData(const QMimeData *data, Qt::DropAction action,
99 int row, int column, const QModelIndex &parent) override;
100 Qt::DropActions supportedDropActions() const override;
101 Qt::DropActions supportedDragActions() const override;
102#endif
103 QMimeData *internalMimeData() const;
104private:
105 QList<QListWidgetItem*> items;
106
107 // A cache must be mutable if get-functions should have const modifiers
108 mutable QModelIndexList cachedIndexes;
109};
110
111
112
114{
115 Q_DECLARE_PUBLIC(QListWidget)
116public:
118 inline QListModel *listModel() const { return qobject_cast<QListModel*>(model); }
119 void setup();
120 void clearConnections();
121 void emitItemPressed(const QModelIndex &index);
122 void emitItemClicked(const QModelIndex &index);
123 void emitItemDoubleClicked(const QModelIndex &index);
124 void emitItemActivated(const QModelIndex &index);
125 void emitItemEntered(const QModelIndex &index);
126 void emitItemChanged(const QModelIndex &index);
127 void emitCurrentItemChanged(const QModelIndex &current, const QModelIndex &previous);
128 void sort();
129 void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
130
136};
137
139{
140public:
141 QListWidgetItemPrivate(QListWidgetItem *item) : q(item), theid(-1) {}
144 int theid;
145};
146
147QT_END_NAMESPACE
148
149#endif // QLISTWIDGET_P_H
bool operator()(QListWidgetItem *i1, QListWidgetItem *i2) const
QListWidgetItem * q
QListWidgetItemPrivate(QListWidgetItem *item)
QList< QWidgetItemData > values
std::optional< Qt::DropActions > supportedDragActions
void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)
void emitItemChanged(const QModelIndex &index)
void emitCurrentItemChanged(const QModelIndex &current, const QModelIndex &previous)
std::array< QMetaObject::Connection, 8 > connections
void emitItemEntered(const QModelIndex &index)
std::array< QMetaObject::Connection, 2 > selectionModelConnections
void emitItemClicked(const QModelIndex &index)
void emitItemActivated(const QModelIndex &index)
void emitItemDoubleClicked(const QModelIndex &index)
void emitItemPressed(const QModelIndex &index)
Qt::SortOrder sortOrder
QT_REQUIRE_CONFIG(listwidget)