00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042 #ifndef QPROXYMODEL_H
00043 #define QPROXYMODEL_H
00044
00045 #include <QtCore/qabstractitemmodel.h>
00046
00047 QT_BEGIN_HEADER
00048
00049 QT_BEGIN_NAMESPACE
00050
00051 QT_MODULE(Gui)
00052
00053 #ifndef QT_NO_PROXYMODEL
00054
00055 class QProxyModelPrivate;
00056
00057 class Q_GUI_EXPORT QProxyModel : public QAbstractItemModel
00058 {
00059 Q_OBJECT
00060
00061 public:
00062 explicit QProxyModel(QObject *parent = 0);
00063 ~QProxyModel();
00064
00065 virtual void setModel(QAbstractItemModel *model);
00066 QAbstractItemModel *model() const;
00067
00068
00069
00070 QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
00071 QModelIndex parent(const QModelIndex &child) const;
00072
00073 int rowCount(const QModelIndex &parent = QModelIndex()) const;
00074 int columnCount(const QModelIndex &parent = QModelIndex()) const;
00075 bool hasChildren(const QModelIndex &parent = QModelIndex()) const;
00076
00077 QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
00078 bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
00079
00080 QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const;
00081 bool setHeaderData(int section, Qt::Orientation orientation, const QVariant &value,
00082 int role = Qt::EditRole);
00083
00084 QStringList mimeTypes() const;
00085 QMimeData *mimeData(const QModelIndexList &indexes) const;
00086 bool dropMimeData(const QMimeData *data, Qt::DropAction action,
00087 int row, int column, const QModelIndex &parent);
00088 Qt::DropActions supportedDropActions() const;
00089
00090 bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
00091 bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex());
00092
00093 void fetchMore(const QModelIndex &parent);
00094 Qt::ItemFlags flags(const QModelIndex &index) const;
00095
00096 void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
00097
00098 QModelIndexList match(const QModelIndex &start, int role, const QVariant &value,
00099 int hits = 1, Qt::MatchFlags flags =
00100 Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const;
00101
00102 QSize span(const QModelIndex &index) const;
00103
00104 bool submit();
00105 void revert();
00106
00107 #ifdef Q_NO_USING_KEYWORD
00108 inline QObject *parent() const { return QObject::parent(); }
00109 #else
00110 using QObject::parent;
00111 #endif
00112
00113 protected:
00114 QProxyModel(QProxyModelPrivate &, QObject *parent = 0);
00115
00116 QModelIndex setProxyModel(const QModelIndex &source_index) const;
00117 QModelIndex setSourceModel(const QModelIndex &proxy_index) const;
00118
00119 void connectToModel(const QAbstractItemModel *model) const;
00120 void disconnectFromModel(const QAbstractItemModel *model) const;
00121
00122 private:
00123 Q_DECLARE_PRIVATE(QProxyModel)
00124 Q_DISABLE_COPY(QProxyModel)
00125
00126 Q_PRIVATE_SLOT(d_func(), void _q_sourceDataChanged(const QModelIndex&,const QModelIndex&))
00127 Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsAboutToBeInserted(const QModelIndex&,int,int))
00128 Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsInserted(const QModelIndex&,int,int))
00129 Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsAboutToBeRemoved(const QModelIndex&,int,int))
00130 Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsRemoved(const QModelIndex&,int,int))
00131 Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsAboutToBeInserted(const QModelIndex&,int,int))
00132 Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsInserted(const QModelIndex&,int,int))
00133 Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsAboutToBeRemoved(const QModelIndex&,int,int))
00134 Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsRemoved(const QModelIndex&,int,int))
00135 };
00136
00137 #endif // QT_NO_PROXYMODEL
00138
00139 QT_END_NAMESPACE
00140
00141 QT_END_HEADER
00142
00143 #endif // QPROXYMODEL_H