/**************************************************************************** ** ** Copyright (C) 1992-2007 Trolltech ASA. All rights reserved. ** ** This file is part of the QtGui module of the Qt Toolkit. ** ** This file may be used under the terms of the GNU General Public ** License version 2.0 as published by the Free Software Foundation ** and appearing in the file LICENSE.GPL included in the packaging of ** this file. Please review the following information to ensure GNU ** General Public Licensing requirements will be met: ** http://www.trolltech.com/products/qt/opensource.html ** ** If you are unsure which license is appropriate for your use, please ** review the following information: ** http://www.trolltech.com/products/qt/licensing.html or contact the ** sales department at sales@trolltech.com. ** ** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE ** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ** ****************************************************************************/ #ifndef QSTANDARDITEMMODEL_H #define QSTANDARDITEMMODEL_H #include <QtCore/qabstractitemmodel.h> #include <QtGui/qbrush.h> #include <QtGui/qfont.h> #include <QtGui/qicon.h> #ifndef QT_NO_DATASTREAM #include <QtCore/qdatastream.h> #endif QT_BEGIN_HEADER QT_MODULE(Gui) #ifndef QT_NO_STANDARDITEMMODEL template <class T> class QList; class QStandardItemModel; class QStandardItemPrivate; 00046 class Q_GUI_EXPORT QStandardItem { public: QStandardItem(); QStandardItem(const QString &text); QStandardItem(const QIcon &icon, const QString &text); QStandardItem(int rows, int columns = 1); virtual ~QStandardItem(); virtual QVariant data(int role = Qt::UserRole + 1) const; virtual void setData(const QVariant &value, int role = Qt::UserRole + 1); 00058 inline QString text() const { return qvariant_cast<QString>(data(Qt::DisplayRole)); } inline void setText(const QString &text); 00063 inline QIcon icon() const { return qvariant_cast<QIcon>(data(Qt::DecorationRole)); } inline void setIcon(const QIcon &icon); #ifndef QT_NO_TOOLTIP 00069 inline QString toolTip() const { return qvariant_cast<QString>(data(Qt::ToolTipRole)); } inline void setToolTip(const QString &toolTip); #endif #ifndef QT_NO_STATUSTIP 00076 inline QString statusTip() const { return qvariant_cast<QString>(data(Qt::StatusTipRole)); } inline void setStatusTip(const QString &statusTip); #endif #ifndef QT_NO_WHATSTHIS 00083 inline QString whatsThis() const { return qvariant_cast<QString>(data(Qt::WhatsThisRole)); } inline void setWhatsThis(const QString &whatsThis); #endif 00089 inline QSize sizeHint() const { return qvariant_cast<QSize>(data(Qt::SizeHintRole)); } inline void setSizeHint(const QSize &sizeHint); 00094 inline QFont font() const { return qvariant_cast<QFont>(data(Qt::FontRole)); } inline void setFont(const QFont &font); 00099 inline Qt::Alignment textAlignment() const { return Qt::Alignment(qvariant_cast<int>(data(Qt::TextAlignmentRole))); } inline void setTextAlignment(Qt::Alignment textAlignment); 00104 inline QBrush background() const { return qvariant_cast<QBrush>(data(Qt::BackgroundRole)); } inline void setBackground(const QBrush &brush); 00109 inline QBrush foreground() const { return qvariant_cast<QBrush>(data(Qt::ForegroundRole)); } inline void setForeground(const QBrush &brush); 00114 inline Qt::CheckState checkState() const { return Qt::CheckState(qvariant_cast<int>(data(Qt::CheckStateRole))); } inline void setCheckState(Qt::CheckState checkState); 00119 inline QString accessibleText() const { return qvariant_cast<QString>(data(Qt::AccessibleTextRole)); } inline void setAccessibleText(const QString &accessibleText); 00124 inline QString accessibleDescription() const { return qvariant_cast<QString>(data(Qt::AccessibleDescriptionRole)); } inline void setAccessibleDescription(const QString &accessibleDescription); Qt::ItemFlags flags() const; void setFlags(Qt::ItemFlags flags); 00132 inline bool isEnabled() const { return (flags() & Qt::ItemIsEnabled) != 0; } void setEnabled(bool enabled); 00137 inline bool isEditable() const { return (flags() & Qt::ItemIsEditable) != 0; } void setEditable(bool editable); 00142 inline bool isSelectable() const { return (flags() & Qt::ItemIsSelectable) != 0; } void setSelectable(bool selectable); 00147 inline bool isCheckable() const { return (flags() & Qt::ItemIsUserCheckable) != 0; } void setCheckable(bool checkable); 00152 inline bool isTristate() const { return (flags() & Qt::ItemIsTristate) != 0; } void setTristate(bool tristate); 00157 inline bool isDragEnabled() const { return (flags() & Qt::ItemIsDragEnabled) != 0; } void setDragEnabled(bool dragEnabled); 00162 inline bool isDropEnabled() const { return (flags() & Qt::ItemIsDropEnabled) != 0; } void setDropEnabled(bool dropEnabled); QStandardItem *parent() const; int row() const; int column() const; QModelIndex index() const; QStandardItemModel *model() const; int rowCount() const; void setRowCount(int rows); int columnCount() const; void setColumnCount(int columns); bool hasChildren() const; QStandardItem *child(int row, int column = 0) const; void setChild(int row, int column, QStandardItem *item); inline void setChild(int row, QStandardItem *item); void insertRow(int row, const QList<QStandardItem*> &items); void insertColumn(int column, const QList<QStandardItem*> &items); void insertRows(int row, int count); void insertColumns(int column, int count); void removeRow(int row); void removeColumn(int column); void removeRows(int row, int count); void removeColumns(int column, int count); inline void appendRow(const QList<QStandardItem*> &items); inline void appendColumn(const QList<QStandardItem*> &items); inline void insertRow(int row, QStandardItem *item); inline void appendRow(QStandardItem *item); QStandardItem *takeChild(int row, int column = 0); QList<QStandardItem*> takeRow(int row); QList<QStandardItem*> takeColumn(int column); void sortChildren(int column, Qt::SortOrder order = Qt::AscendingOrder); virtual QStandardItem *clone() const; 00206 enum ItemType { Type = 0, UserType = 1000 }; virtual int type() const; #ifndef QT_NO_DATASTREAM virtual void read(QDataStream &in); virtual void write(QDataStream &out) const; #endif virtual bool operator<(const QStandardItem &other) const; protected: QStandardItem(const QStandardItem &other); QStandardItem(QStandardItemPrivate &dd); QStandardItem &operator=(const QStandardItem &other); QStandardItemPrivate *d_ptr; private: Q_DECLARE_PRIVATE(QStandardItem) friend class QStandardItemModelPrivate; friend class QStandardItemModel; }; 00227 inline void QStandardItem::setText(const QString &atext) { setData(atext, Qt::DisplayRole); } 00230 inline void QStandardItem::setIcon(const QIcon &aicon) { setData(aicon, Qt::DecorationRole); } #ifndef QT_NO_TOOLTIP 00234 inline void QStandardItem::setToolTip(const QString &atoolTip) { setData(atoolTip, Qt::ToolTipRole); } #endif #ifndef QT_NO_STATUSTIP 00239 inline void QStandardItem::setStatusTip(const QString &astatusTip) { setData(astatusTip, Qt::StatusTipRole); } #endif #ifndef QT_NO_WHATSTHIS 00244 inline void QStandardItem::setWhatsThis(const QString &awhatsThis) { setData(awhatsThis, Qt::WhatsThisRole); } #endif 00248 inline void QStandardItem::setSizeHint(const QSize &asizeHint) { setData(asizeHint, Qt::SizeHintRole); } 00251 inline void QStandardItem::setFont(const QFont &afont) { setData(afont, Qt::FontRole); } 00254 inline void QStandardItem::setTextAlignment(Qt::Alignment atextAlignment) { setData(int(atextAlignment), Qt::TextAlignmentRole); } 00257 inline void QStandardItem::setBackground(const QBrush &abrush) { setData(abrush, Qt::BackgroundRole); } 00260 inline void QStandardItem::setForeground(const QBrush &abrush) { setData(abrush, Qt::ForegroundRole); } 00263 inline void QStandardItem::setCheckState(Qt::CheckState acheckState) { setData(acheckState, Qt::CheckStateRole); } 00266 inline void QStandardItem::setAccessibleText(const QString &aaccessibleText) { setData(aaccessibleText, Qt::AccessibleTextRole); } 00269 inline void QStandardItem::setAccessibleDescription(const QString &aaccessibleDescription) { setData(aaccessibleDescription, Qt::AccessibleDescriptionRole); } 00272 inline void QStandardItem::setChild(int arow, QStandardItem *aitem) { setChild(arow, 0, aitem); } 00275 inline void QStandardItem::appendRow(const QList<QStandardItem*> &aitems) { insertRow(rowCount(), aitems); } 00278 inline void QStandardItem::appendColumn(const QList<QStandardItem*> &aitems) { insertColumn(columnCount(), aitems); } 00281 inline void QStandardItem::insertRow(int arow, QStandardItem *aitem) { insertRow(arow, QList<QStandardItem*>() << aitem); } 00284 inline void QStandardItem::appendRow(QStandardItem *aitem) { insertRow(rowCount(), aitem); } class QStandardItemModelPrivate; 00289 class Q_GUI_EXPORT QStandardItemModel : public QAbstractItemModel { Q_OBJECT 00292 Q_PROPERTY(int sortRole READ sortRole WRITE setSortRole) public: explicit QStandardItemModel(QObject *parent = 0); QStandardItemModel(int rows, int columns, QObject *parent = 0); ~QStandardItemModel(); QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const; QModelIndex parent(const QModelIndex &child) const; int rowCount(const QModelIndex &parent = QModelIndex()) const; int columnCount(const QModelIndex &parent = QModelIndex()) const; bool hasChildren(const QModelIndex &parent = QModelIndex()) const; QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const; bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole); QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value, int role = Qt::EditRole); bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex()); bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex()); bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex()); bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex()); Qt::ItemFlags flags(const QModelIndex &index) const; Qt::DropActions supportedDropActions() const; QMap<int, QVariant> itemData(const QModelIndex &index) const; bool setItemData(const QModelIndex &index, const QMap<int, QVariant> &roles); void clear(); #ifdef Q_NO_USING_KEYWORD inline QObject *parent() const { return QObject::parent(); } #else using QObject::parent; #endif void sort(int column, Qt::SortOrder order = Qt::AscendingOrder); QStandardItem *itemFromIndex(const QModelIndex &index) const; QModelIndex indexFromItem(const QStandardItem *item) const; QStandardItem *item(int row, int column = 0) const; void setItem(int row, int column, QStandardItem *item); inline void setItem(int row, QStandardItem *item); QStandardItem *invisibleRootItem() const; QStandardItem *horizontalHeaderItem(int column) const; void setHorizontalHeaderItem(int column, QStandardItem *item); QStandardItem *verticalHeaderItem(int row) const; void setVerticalHeaderItem(int row, QStandardItem *item); void setHorizontalHeaderLabels(const QStringList &labels); void setVerticalHeaderLabels(const QStringList &labels); void setRowCount(int rows); void setColumnCount(int columns); void appendRow(const QList<QStandardItem*> &items); void appendColumn(const QList<QStandardItem*> &items); inline void appendRow(QStandardItem *item); void insertRow(int row, const QList<QStandardItem*> &items); void insertColumn(int column, const QList<QStandardItem*> &items); inline void insertRow(int row, QStandardItem *item); inline bool insertRow(int row, const QModelIndex &parent = QModelIndex()); inline bool insertColumn(int column, const QModelIndex &parent = QModelIndex()); QStandardItem *takeItem(int row, int column = 0); QList<QStandardItem*> takeRow(int row); QList<QStandardItem*> takeColumn(int column); QStandardItem *takeHorizontalHeaderItem(int column); QStandardItem *takeVerticalHeaderItem(int row); const QStandardItem *itemPrototype() const; void setItemPrototype(const QStandardItem *item); QList<QStandardItem*> findItems(const QString &text, Qt::MatchFlags flags = Qt::MatchExactly, int column = 0) const; int sortRole() const; void setSortRole(int role); Q_SIGNALS: void itemChanged(QStandardItem *item); protected: QStandardItemModel(QStandardItemModelPrivate &dd, QObject *parent = 0); private: friend class QStandardItemPrivate; friend class QStandardItem; Q_DISABLE_COPY(QStandardItemModel) Q_DECLARE_PRIVATE(QStandardItemModel) Q_PRIVATE_SLOT(d_func(), void _q_emitItemChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight)) }; 00398 inline void QStandardItemModel::setItem(int arow, QStandardItem *aitem) { setItem(arow, 0, aitem); } 00401 inline void QStandardItemModel::appendRow(QStandardItem *aitem) { appendRow(QList<QStandardItem*>() << aitem); } 00404 inline void QStandardItemModel::insertRow(int arow, QStandardItem *aitem) { insertRow(arow, QList<QStandardItem*>() << aitem); } 00407 inline bool QStandardItemModel::insertRow(int arow, const QModelIndex &aparent) { return QAbstractItemModel::insertRow(arow, aparent); } 00409 inline bool QStandardItemModel::insertColumn(int acolumn, const QModelIndex &aparent) { return QAbstractItemModel::insertColumn(acolumn, aparent); } #ifndef QT_NO_DATASTREAM Q_GUI_EXPORT QDataStream &operator>>(QDataStream &in, QStandardItem &item); Q_GUI_EXPORT QDataStream &operator<<(QDataStream &out, const QStandardItem &item); #endif #endif // QT_NO_STANDARDITEMMODEL QT_END_HEADER #endif //QSTANDARDITEMMODEL_H