Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2026-09-16 09:22:25

0001 // Copyright (C) 2016 The Qt Company Ltd.
0002 // SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
0003 // Qt-Security score:significant reason:default
0004 
0005 #ifndef QSTANDARDITEMMODEL_H
0006 #define QSTANDARDITEMMODEL_H
0007 
0008 #include <QtGui/qtguiglobal.h>
0009 #include <QtCore/qabstractitemmodel.h>
0010 #include <QtGui/qbrush.h>
0011 #include <QtGui/qfont.h>
0012 #include <QtGui/qicon.h>
0013 #ifndef QT_NO_DATASTREAM
0014 #include <QtCore/qdatastream.h>
0015 #endif
0016 
0017 QT_REQUIRE_CONFIG(standarditemmodel);
0018 
0019 QT_BEGIN_NAMESPACE
0020 
0021 class QStandardItemModel;
0022 
0023 class QStandardItemPrivate;
0024 class Q_GUI_EXPORT QStandardItem
0025 {
0026 public:
0027     QStandardItem();
0028     explicit QStandardItem(const QString &text);
0029     QStandardItem(const QIcon &icon, const QString &text);
0030     explicit QStandardItem(int rows, int columns = 1);
0031     virtual ~QStandardItem();
0032 
0033     virtual QVariant data(int role = Qt::UserRole + 1) const;
0034     virtual void multiData(QModelRoleDataSpan roleDataSpan) const;
0035     virtual void setData(const QVariant &value, int role = Qt::UserRole + 1);
0036     void clearData();
0037 
0038     inline QString text() const {
0039         return qvariant_cast<QString>(data(Qt::DisplayRole));
0040     }
0041     inline void setText(const QString &text);
0042 
0043     inline QIcon icon() const {
0044         return qvariant_cast<QIcon>(data(Qt::DecorationRole));
0045     }
0046     inline void setIcon(const QIcon &icon);
0047 
0048     inline QString toolTip() const {
0049         return qvariant_cast<QString>(data(Qt::ToolTipRole));
0050     }
0051     inline void setToolTip(const QString &toolTip);
0052 
0053 #ifndef QT_NO_STATUSTIP
0054     inline QString statusTip() const {
0055         return qvariant_cast<QString>(data(Qt::StatusTipRole));
0056     }
0057     inline void setStatusTip(const QString &statusTip);
0058 #endif
0059 
0060 #if QT_CONFIG(whatsthis)
0061     inline QString whatsThis() const {
0062         return qvariant_cast<QString>(data(Qt::WhatsThisRole));
0063     }
0064     inline void setWhatsThis(const QString &whatsThis);
0065 #endif
0066 
0067     inline QSize sizeHint() const {
0068         return qvariant_cast<QSize>(data(Qt::SizeHintRole));
0069     }
0070     inline void setSizeHint(const QSize &sizeHint);
0071 
0072     inline QFont font() const {
0073         return qvariant_cast<QFont>(data(Qt::FontRole));
0074     }
0075     inline void setFont(const QFont &font);
0076 
0077     inline Qt::Alignment textAlignment() const {
0078         return qvariant_cast<Qt::Alignment>(data(Qt::TextAlignmentRole));
0079     }
0080     inline void setTextAlignment(Qt::Alignment textAlignment);
0081 
0082     inline QBrush background() const {
0083         return qvariant_cast<QBrush>(data(Qt::BackgroundRole));
0084     }
0085     inline void setBackground(const QBrush &brush);
0086 
0087     inline QBrush foreground() const {
0088         return qvariant_cast<QBrush>(data(Qt::ForegroundRole));
0089     }
0090     inline void setForeground(const QBrush &brush);
0091 
0092     inline Qt::CheckState checkState() const {
0093         return Qt::CheckState(qvariant_cast<int>(data(Qt::CheckStateRole)));
0094     }
0095     inline void setCheckState(Qt::CheckState checkState);
0096 
0097     inline QString accessibleText() const {
0098         return qvariant_cast<QString>(data(Qt::AccessibleTextRole));
0099     }
0100     inline void setAccessibleText(const QString &accessibleText);
0101 
0102     inline QString accessibleDescription() const {
0103         return qvariant_cast<QString>(data(Qt::AccessibleDescriptionRole));
0104     }
0105     inline void setAccessibleDescription(const QString &accessibleDescription);
0106 
0107     Qt::ItemFlags flags() const;
0108     void setFlags(Qt::ItemFlags flags);
0109 
0110     inline bool isEnabled() const {
0111         return bool(flags() & Qt::ItemIsEnabled);
0112     }
0113     void setEnabled(bool enabled);
0114 
0115     inline bool isEditable() const {
0116         return bool(flags() & Qt::ItemIsEditable);
0117     }
0118     void setEditable(bool editable);
0119 
0120     inline bool isSelectable() const {
0121         return bool(flags() & Qt::ItemIsSelectable);
0122     }
0123     void setSelectable(bool selectable);
0124 
0125     inline bool isCheckable() const {
0126         return bool(flags() & Qt::ItemIsUserCheckable);
0127     }
0128     void setCheckable(bool checkable);
0129 
0130     inline bool isAutoTristate() const {
0131         return bool(flags() & Qt::ItemIsAutoTristate);
0132     }
0133     void setAutoTristate(bool tristate);
0134 
0135     inline bool isUserTristate() const {
0136         return bool(flags() & Qt::ItemIsUserTristate);
0137     }
0138     void setUserTristate(bool tristate);
0139 
0140 #if QT_CONFIG(draganddrop)
0141     inline bool isDragEnabled() const {
0142         return bool(flags() & Qt::ItemIsDragEnabled);
0143     }
0144     void setDragEnabled(bool dragEnabled);
0145 
0146     inline bool isDropEnabled() const {
0147         return bool(flags() & Qt::ItemIsDropEnabled);
0148     }
0149     void setDropEnabled(bool dropEnabled);
0150 #endif // QT_CONFIG(draganddrop)
0151 
0152     QStandardItem *parent() const;
0153     int row() const;
0154     int column() const;
0155     QModelIndex index() const;
0156     QStandardItemModel *model() const;
0157 
0158     int rowCount() const;
0159     void setRowCount(int rows);
0160     int columnCount() const;
0161     void setColumnCount(int columns);
0162 
0163     bool hasChildren() const;
0164     QStandardItem *child(int row, int column = 0) const;
0165     void setChild(int row, int column, QStandardItem *item);
0166     inline void setChild(int row, QStandardItem *item);
0167 
0168     void insertRow(int row, const QList<QStandardItem*> &items);
0169     void insertColumn(int column, const QList<QStandardItem*> &items);
0170     void insertRows(int row, const QList<QStandardItem*> &items);
0171     void insertRows(int row, int count);
0172     void insertColumns(int column, int count);
0173 
0174     void removeRow(int row);
0175     void removeColumn(int column);
0176     void removeRows(int row, int count);
0177     void removeColumns(int column, int count);
0178 
0179     inline void appendRow(const QList<QStandardItem*> &items);
0180     inline void appendRows(const QList<QStandardItem*> &items);
0181     inline void appendColumn(const QList<QStandardItem*> &items);
0182     inline void insertRow(int row, QStandardItem *item);
0183     inline void appendRow(QStandardItem *item);
0184 
0185     QStandardItem *takeChild(int row, int column = 0);
0186     QList<QStandardItem*> takeRow(int row);
0187     QList<QStandardItem*> takeColumn(int column);
0188 
0189     void sortChildren(int column, Qt::SortOrder order = Qt::AscendingOrder);
0190 
0191     virtual QStandardItem *clone() const;
0192 
0193     enum ItemType { Type = 0, UserType = 1000 };
0194     virtual int type() const;
0195 
0196 #ifndef QT_NO_DATASTREAM
0197     virtual void read(QDataStream &in);
0198     virtual void write(QDataStream &out) const;
0199 #endif
0200     virtual bool operator<(const QStandardItem &other) const;
0201 
0202 protected:
0203     QStandardItem(const QStandardItem &other);
0204     QStandardItem(QStandardItemPrivate &dd);
0205     QStandardItem &operator=(const QStandardItem &other);
0206     QScopedPointer<QStandardItemPrivate> d_ptr;
0207 
0208     void emitDataChanged();
0209 
0210 private:
0211     Q_DECLARE_PRIVATE(QStandardItem)
0212     friend class QStandardItemModelPrivate;
0213     friend class QStandardItemModel;
0214 };
0215 
0216 inline void QStandardItem::setText(const QString &atext)
0217 { setData(atext, Qt::DisplayRole); }
0218 
0219 inline void QStandardItem::setIcon(const QIcon &aicon)
0220 { setData(aicon, Qt::DecorationRole); }
0221 
0222 inline void QStandardItem::setToolTip(const QString &atoolTip)
0223 { setData(atoolTip, Qt::ToolTipRole); }
0224 
0225 #ifndef QT_NO_STATUSTIP
0226 inline void QStandardItem::setStatusTip(const QString &astatusTip)
0227 { setData(astatusTip, Qt::StatusTipRole); }
0228 #endif
0229 
0230 #if QT_CONFIG(whatsthis)
0231 inline void QStandardItem::setWhatsThis(const QString &awhatsThis)
0232 { setData(awhatsThis, Qt::WhatsThisRole); }
0233 #endif
0234 
0235 inline void QStandardItem::setSizeHint(const QSize &asizeHint)
0236 { setData(asizeHint, Qt::SizeHintRole); }
0237 
0238 inline void QStandardItem::setFont(const QFont &afont)
0239 { setData(afont, Qt::FontRole); }
0240 
0241 inline void QStandardItem::setTextAlignment(Qt::Alignment atextAlignment)
0242 { setData(QVariant::fromValue(atextAlignment), Qt::TextAlignmentRole); }
0243 
0244 inline void QStandardItem::setBackground(const QBrush &abrush)
0245 { setData(abrush, Qt::BackgroundRole); }
0246 
0247 inline void QStandardItem::setForeground(const QBrush &abrush)
0248 { setData(abrush, Qt::ForegroundRole); }
0249 
0250 inline void QStandardItem::setCheckState(Qt::CheckState acheckState)
0251 { setData(acheckState, Qt::CheckStateRole); }
0252 
0253 inline void QStandardItem::setAccessibleText(const QString &aaccessibleText)
0254 { setData(aaccessibleText, Qt::AccessibleTextRole); }
0255 
0256 inline void QStandardItem::setAccessibleDescription(const QString &aaccessibleDescription)
0257 { setData(aaccessibleDescription, Qt::AccessibleDescriptionRole); }
0258 
0259 inline void QStandardItem::setChild(int arow, QStandardItem *aitem)
0260 { setChild(arow, 0, aitem); }
0261 
0262 inline void QStandardItem::appendRow(const QList<QStandardItem*> &aitems)
0263 { insertRow(rowCount(), aitems); }
0264 
0265 inline void QStandardItem::appendRows(const QList<QStandardItem*> &aitems)
0266 { insertRows(rowCount(), aitems); }
0267 
0268 inline void QStandardItem::appendColumn(const QList<QStandardItem*> &aitems)
0269 { insertColumn(columnCount(), aitems); }
0270 
0271 inline void QStandardItem::insertRow(int arow, QStandardItem *aitem)
0272 { insertRow(arow, QList<QStandardItem*>() << aitem); }
0273 
0274 inline void QStandardItem::appendRow(QStandardItem *aitem)
0275 { insertRow(rowCount(), aitem); }
0276 
0277 class QStandardItemModelPrivate;
0278 
0279 class Q_GUI_EXPORT QStandardItemModel : public QAbstractItemModel
0280 {
0281     Q_OBJECT
0282     Q_PROPERTY(int sortRole READ sortRole WRITE setSortRole BINDABLE bindableSortRole)
0283 
0284 public:
0285     explicit QStandardItemModel(QObject *parent = nullptr);
0286     QStandardItemModel(int rows, int columns, QObject *parent = nullptr);
0287     ~QStandardItemModel();
0288 
0289     void setItemRoleNames(const QHash<int,QByteArray> &roleNames);
0290     QHash<int, QByteArray> roleNames() const override;
0291 
0292     QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const override;
0293     QModelIndex parent(const QModelIndex &child) const override;
0294 
0295     int rowCount(const QModelIndex &parent = QModelIndex()) const override;
0296     int columnCount(const QModelIndex &parent = QModelIndex()) const override;
0297     bool hasChildren(const QModelIndex &parent = QModelIndex()) const override;
0298 
0299     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const override;
0300     void multiData(const QModelIndex &index, QModelRoleDataSpan roleDataSpan) const override;
0301     bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole) override;
0302     bool clearItemData(const QModelIndex &index) override;
0303 
0304     QVariant headerData(int section, Qt::Orientation orientation,
0305                         int role = Qt::DisplayRole) const override;
0306     bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value,
0307                        int role = Qt::EditRole) override;
0308 
0309     bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;
0310     bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override;
0311     bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()) override;
0312     bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()) override;
0313 
0314     Qt::ItemFlags flags(const QModelIndex &index) const override;
0315     Qt::DropActions supportedDropActions() const override;
0316 
0317     QMap<int, QVariant> itemData(const QModelIndex &index) const override;
0318     bool setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles) override;
0319 
0320     void clear();
0321 
0322     using QObject::parent;
0323 
0324     void sort(int column, Qt::SortOrder order = Qt::AscendingOrder) override;
0325 
0326     QStandardItem *itemFromIndex(const QModelIndex &index) const;
0327     QModelIndex indexFromItem(const QStandardItem *item) const;
0328 
0329     QStandardItem *item(int row, int column = 0) const;
0330     void setItem(int row, int column, QStandardItem *item);
0331     inline void setItem(int row, QStandardItem *item);
0332     QStandardItem *invisibleRootItem() const;
0333 
0334     QStandardItem *horizontalHeaderItem(int column) const;
0335     void setHorizontalHeaderItem(int column, QStandardItem *item);
0336     QStandardItem *verticalHeaderItem(int row) const;
0337     void setVerticalHeaderItem(int row, QStandardItem *item);
0338 
0339     void setHorizontalHeaderLabels(const QStringList &labels);
0340     void setVerticalHeaderLabels(const QStringList &labels);
0341 
0342     void setRowCount(int rows);
0343     void setColumnCount(int columns);
0344 
0345     void appendRow(const QList<QStandardItem*> &items);
0346     void appendColumn(const QList<QStandardItem*> &items);
0347     inline void appendRow(QStandardItem *item);
0348 
0349     void insertRow(int row, const QList<QStandardItem*> &items);
0350     void insertColumn(int column, const QList<QStandardItem*> &items);
0351     inline void insertRow(int row, QStandardItem *item);
0352 
0353     inline bool insertRow(int row, const QModelIndex &parent = QModelIndex());
0354     inline bool insertColumn(int column, const QModelIndex &parent = QModelIndex());
0355 
0356     QStandardItem *takeItem(int row, int column = 0);
0357     QList<QStandardItem*> takeRow(int row);
0358     QList<QStandardItem*> takeColumn(int column);
0359 
0360     QStandardItem *takeHorizontalHeaderItem(int column);
0361     QStandardItem *takeVerticalHeaderItem(int row);
0362 
0363     const QStandardItem *itemPrototype() const;
0364     void setItemPrototype(const QStandardItem *item);
0365 
0366     QList<QStandardItem*> findItems(const QString &text,
0367                                     Qt::MatchFlags flags = Qt::MatchExactly,
0368                                     int column = 0) const;
0369 
0370     int sortRole() const;
0371     void setSortRole(int role);
0372     QBindable<int> bindableSortRole();
0373 
0374     QStringList mimeTypes() const override;
0375     QMimeData *mimeData(const QModelIndexList &indexes) const override;
0376     bool dropMimeData (const QMimeData *data, Qt::DropAction action, int row, int column, const QModelIndex &parent) override;
0377 
0378 Q_SIGNALS:
0379     void itemChanged(QStandardItem *item);
0380 
0381 protected:
0382     QStandardItemModel(QStandardItemModelPrivate &dd, QObject *parent = nullptr);
0383 
0384 private:
0385     friend class QStandardItemPrivate;
0386     friend class QStandardItem;
0387     Q_DISABLE_COPY(QStandardItemModel)
0388     Q_DECLARE_PRIVATE(QStandardItemModel)
0389 
0390     Q_PRIVATE_SLOT(d_func(), void _q_emitItemChanged(const QModelIndex &topLeft,
0391                                                      const QModelIndex &bottomRight))
0392 };
0393 
0394 inline void QStandardItemModel::setItem(int arow, QStandardItem *aitem)
0395 { setItem(arow, 0, aitem); }
0396 
0397 inline void QStandardItemModel::appendRow(QStandardItem *aitem)
0398 { appendRow(QList<QStandardItem*>() << aitem); }
0399 
0400 inline void QStandardItemModel::insertRow(int arow, QStandardItem *aitem)
0401 { insertRow(arow, QList<QStandardItem*>() << aitem); }
0402 
0403 inline bool QStandardItemModel::insertRow(int arow, const QModelIndex &aparent)
0404 { return QAbstractItemModel::insertRow(arow, aparent); }
0405 inline bool QStandardItemModel::insertColumn(int acolumn, const QModelIndex &aparent)
0406 { return QAbstractItemModel::insertColumn(acolumn, aparent); }
0407 
0408 #ifndef QT_NO_DATASTREAM
0409 Q_GUI_EXPORT QDataStream &operator>>(QDataStream &in, QStandardItem &item);
0410 Q_GUI_EXPORT QDataStream &operator<<(QDataStream &out, const QStandardItem &item);
0411 #endif
0412 
0413 QT_END_NAMESPACE
0414 
0415 #endif //QSTANDARDITEMMODEL_H