qsortfilterproxymodel.h
上传用户:detong
上传日期:2022-06-22
资源大小:20675k
文件大小:8k
源码类别:

系统编程

开发平台:

Unix_Linux

  1. /****************************************************************************
  2. **
  3. ** Copyright (C) 2008 Nokia Corporation and/or its subsidiary(-ies).
  4. ** Contact: Qt Software Information (qt-info@nokia.com)
  5. **
  6. ** This file is part of the QtGui module of the Qt Toolkit.
  7. **
  8. ** Commercial Usage
  9. ** Licensees holding valid Qt Commercial licenses may use this file in
  10. ** accordance with the Qt Commercial License Agreement provided with the
  11. ** Software or, alternatively, in accordance with the terms contained in
  12. ** a written agreement between you and Nokia.
  13. **
  14. **
  15. ** GNU General Public License Usage
  16. ** Alternatively, this file may be used under the terms of the GNU
  17. ** General Public License versions 2.0 or 3.0 as published by the Free
  18. ** Software Foundation and appearing in the file LICENSE.GPL included in
  19. ** the packaging of this file.  Please review the following information
  20. ** to ensure GNU General Public Licensing requirements will be met:
  21. ** http://www.fsf.org/licensing/licenses/info/GPLv2.html and
  22. ** http://www.gnu.org/copyleft/gpl.html.  In addition, as a special
  23. ** exception, Nokia gives you certain additional rights. These rights
  24. ** are described in the Nokia Qt GPL Exception version 1.3, included in
  25. ** the file GPL_EXCEPTION.txt in this package.
  26. **
  27. ** Qt for Windows(R) Licensees
  28. ** As a special exception, Nokia, as the sole copyright holder for Qt
  29. ** Designer, grants users of the Qt/Eclipse Integration plug-in the
  30. ** right for the Qt/Eclipse Integration to link to functionality
  31. ** provided by Qt Designer and its related libraries.
  32. **
  33. ** If you are unsure which license is appropriate for your use, please
  34. ** contact the sales department at qt-sales@nokia.com.
  35. **
  36. ****************************************************************************/
  37. #ifndef QSORTFILTERPROXYMODEL_H
  38. #define QSORTFILTERPROXYMODEL_H
  39. #include <QtGui/qabstractproxymodel.h>
  40. #ifndef QT_NO_SORTFILTERPROXYMODEL
  41. #include <QtCore/qregexp.h>
  42. QT_BEGIN_HEADER
  43. QT_BEGIN_NAMESPACE
  44. QT_MODULE(Gui)
  45. class QSortFilterProxyModelPrivate;
  46. class QSortFilterProxyModelLessThan;
  47. class QSortFilterProxyModelGreaterThan;
  48. class Q_GUI_EXPORT QSortFilterProxyModel : public QAbstractProxyModel
  49. {
  50.     friend class QSortFilterProxyModelLessThan;
  51.     friend class QSortFilterProxyModelGreaterThan;
  52.     Q_OBJECT
  53.     Q_PROPERTY(QRegExp filterRegExp READ filterRegExp WRITE setFilterRegExp)
  54.     Q_PROPERTY(int filterKeyColumn READ filterKeyColumn WRITE setFilterKeyColumn)
  55.     Q_PROPERTY(bool dynamicSortFilter READ dynamicSortFilter WRITE setDynamicSortFilter)
  56.     Q_PROPERTY(Qt::CaseSensitivity filterCaseSensitivity READ filterCaseSensitivity WRITE setFilterCaseSensitivity)
  57.     Q_PROPERTY(Qt::CaseSensitivity sortCaseSensitivity READ sortCaseSensitivity WRITE setSortCaseSensitivity)
  58.     Q_PROPERTY(bool isSortLocaleAware READ isSortLocaleAware WRITE setSortLocaleAware)
  59.     Q_PROPERTY(int sortRole READ sortRole WRITE setSortRole)
  60.     Q_PROPERTY(int filterRole READ filterRole WRITE setFilterRole)
  61. public:
  62.     QSortFilterProxyModel(QObject *parent = 0);
  63.     ~QSortFilterProxyModel();
  64.     void setSourceModel(QAbstractItemModel *sourceModel);
  65.     QModelIndex mapToSource(const QModelIndex &proxyIndex) const;
  66.     QModelIndex mapFromSource(const QModelIndex &sourceIndex) const;
  67.     QItemSelection mapSelectionToSource(const QItemSelection &proxySelection) const;
  68.     QItemSelection mapSelectionFromSource(const QItemSelection &sourceSelection) const;
  69.     QRegExp filterRegExp() const;
  70.     void setFilterRegExp(const QRegExp &regExp);
  71.     int filterKeyColumn() const;
  72.     void setFilterKeyColumn(int column);
  73.     Qt::CaseSensitivity filterCaseSensitivity() const;
  74.     void setFilterCaseSensitivity(Qt::CaseSensitivity cs);
  75.     Qt::CaseSensitivity sortCaseSensitivity() const;
  76.     void setSortCaseSensitivity(Qt::CaseSensitivity cs);
  77.     bool isSortLocaleAware() const;
  78.     void setSortLocaleAware(bool on);
  79.     bool dynamicSortFilter() const;
  80.     void setDynamicSortFilter(bool enable);
  81.     int sortRole() const;
  82.     void setSortRole(int role);
  83.     int filterRole() const;
  84.     void setFilterRole(int role);
  85. public Q_SLOTS:
  86.     void setFilterRegExp(const QString &pattern);
  87.     void setFilterWildcard(const QString &pattern);
  88.     void setFilterFixedString(const QString &pattern);
  89.     void clear();
  90.     void invalidate();
  91. protected:
  92.     virtual bool filterAcceptsRow(int source_row, const QModelIndex &source_parent) const;
  93.     virtual bool filterAcceptsColumn(int source_column, const QModelIndex &source_parent) const;
  94.     virtual bool lessThan(const QModelIndex &left, const QModelIndex &right) const;
  95.     void filterChanged();
  96.     void invalidateFilter();
  97. public:
  98. #ifdef Q_NO_USING_KEYWORD
  99.     inline QObject *parent() const { return QObject::parent(); }
  100. #else
  101.     using QObject::parent;
  102. #endif
  103.     QModelIndex index(int row, int column, const QModelIndex &parent = QModelIndex()) const;
  104.     QModelIndex parent(const QModelIndex &child) const;
  105.     int rowCount(const QModelIndex &parent = QModelIndex()) const;
  106.     int columnCount(const QModelIndex &parent = QModelIndex()) const;
  107.     bool hasChildren(const QModelIndex &parent = QModelIndex()) const;
  108.     QVariant data(const QModelIndex &index, int role = Qt::DisplayRole) const;
  109.     bool setData(const QModelIndex &index, const QVariant &value, int role = Qt::EditRole);
  110.     QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::EditRole) const;
  111.     bool setHeaderData(int section, Qt::Orientation orientation,
  112.             const QVariant &value, int role = Qt::EditRole);
  113.     QMimeData *mimeData(const QModelIndexList &indexes) const;
  114.     bool dropMimeData(const QMimeData *data, Qt::DropAction action,
  115.                       int row, int column, const QModelIndex &parent);
  116.     bool insertRows(int row, int count, const QModelIndex &parent = QModelIndex());
  117.     bool insertColumns(int column, int count, const QModelIndex &parent = QModelIndex());
  118.     bool removeRows(int row, int count, const QModelIndex &parent = QModelIndex());
  119.     bool removeColumns(int column, int count, const QModelIndex &parent = QModelIndex());
  120.     void fetchMore(const QModelIndex &parent);
  121.     bool canFetchMore(const QModelIndex &parent) const;
  122.     Qt::ItemFlags flags(const QModelIndex &index) const;
  123.     QModelIndex buddy(const QModelIndex &index) const;
  124.     QModelIndexList match(const QModelIndex &start, int role,
  125.                           const QVariant &value, int hits = 1,
  126.                           Qt::MatchFlags flags =
  127.                           Qt::MatchFlags(Qt::MatchStartsWith|Qt::MatchWrap)) const;
  128.     QSize span(const QModelIndex &index) const;
  129.     void sort(int column, Qt::SortOrder order = Qt::AscendingOrder);
  130.     QStringList mimeTypes() const;
  131.     Qt::DropActions supportedDropActions() const;
  132. private:
  133.     Q_DECLARE_PRIVATE(QSortFilterProxyModel)
  134.     Q_DISABLE_COPY(QSortFilterProxyModel)
  135.     Q_PRIVATE_SLOT(d_func(), void _q_sourceDataChanged(const QModelIndex &source_top_left, const QModelIndex &source_bottom_right))
  136.     Q_PRIVATE_SLOT(d_func(), void _q_sourceHeaderDataChanged(Qt::Orientation orientation, int start, int end))
  137.     Q_PRIVATE_SLOT(d_func(), void _q_sourceReset())
  138.     Q_PRIVATE_SLOT(d_func(), void _q_sourceLayoutAboutToBeChanged())
  139.     Q_PRIVATE_SLOT(d_func(), void _q_sourceLayoutChanged())
  140.     Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsAboutToBeInserted(const QModelIndex &source_parent, int start, int end))
  141.     Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsInserted(const QModelIndex &source_parent, int start, int end))
  142.     Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsAboutToBeRemoved(const QModelIndex &source_parent, int start, int end))
  143.     Q_PRIVATE_SLOT(d_func(), void _q_sourceRowsRemoved(const QModelIndex &source_parent, int start, int end))
  144.     Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsAboutToBeInserted(const QModelIndex &source_parent, int start, int end))
  145.     Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsInserted(const QModelIndex &source_parent, int start, int end))
  146.     Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsAboutToBeRemoved(const QModelIndex &source_parent, int start, int end))
  147.     Q_PRIVATE_SLOT(d_func(), void _q_sourceColumnsRemoved(const QModelIndex &source_parent, int start, int end))
  148. };
  149. QT_END_NAMESPACE
  150. QT_END_HEADER
  151. #endif // QT_NO_SORTFILTERPROXYMODEL
  152. #endif // QSORTFILTERPROXYMODEL_H