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

系统编程

开发平台:

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 QHEADERVIEW_H
  38. #define QHEADERVIEW_H
  39. #include <QtGui/qabstractitemview.h>
  40. QT_BEGIN_HEADER
  41. QT_BEGIN_NAMESPACE
  42. QT_MODULE(Gui)
  43. #ifndef QT_NO_ITEMVIEWS
  44. class QHeaderViewPrivate;
  45. class QStyleOptionHeader;
  46. class Q_GUI_EXPORT QHeaderView : public QAbstractItemView
  47. {
  48.     Q_OBJECT
  49.     Q_PROPERTY(bool showSortIndicator READ isSortIndicatorShown WRITE setSortIndicatorShown)
  50.     Q_PROPERTY(bool highlightSections READ highlightSections WRITE setHighlightSections)
  51.     Q_PROPERTY(bool stretchLastSection READ stretchLastSection WRITE setStretchLastSection)
  52.     Q_PROPERTY(bool cascadingSectionResizes READ cascadingSectionResizes WRITE setCascadingSectionResizes)
  53.     Q_PROPERTY(int defaultSectionSize READ defaultSectionSize WRITE setDefaultSectionSize)
  54.     Q_PROPERTY(int minimumSectionSize READ minimumSectionSize WRITE setMinimumSectionSize)
  55.     Q_PROPERTY(Qt::Alignment defaultAlignment READ defaultAlignment WRITE setDefaultAlignment)
  56.     Q_ENUMS(ResizeMode)
  57. public:
  58.     enum ResizeMode
  59.     {
  60.         Interactive,
  61.         Stretch,
  62.         Fixed,
  63.         ResizeToContents,
  64.         Custom = Fixed
  65.     };
  66.     explicit QHeaderView(Qt::Orientation orientation, QWidget *parent = 0);
  67.     virtual ~QHeaderView();
  68.     void setModel(QAbstractItemModel *model);
  69.     Qt::Orientation orientation() const;
  70.     int offset() const;
  71.     int length() const;
  72.     QSize sizeHint() const;
  73.     int sectionSizeHint(int logicalIndex) const;
  74.     int visualIndexAt(int position) const;
  75.     int logicalIndexAt(int position) const;
  76.     inline int logicalIndexAt(int x, int y) const;
  77.     inline int logicalIndexAt(const QPoint &pos) const;
  78.     int sectionSize(int logicalIndex) const;
  79.     int sectionPosition(int logicalIndex) const;
  80.     int sectionViewportPosition(int logicalIndex) const;
  81.     void moveSection(int from, int to);
  82.     void swapSections(int first, int second);
  83.     void resizeSection(int logicalIndex, int size);
  84.     void resizeSections(QHeaderView::ResizeMode mode);
  85.     bool isSectionHidden(int logicalIndex) const;
  86.     void setSectionHidden(int logicalIndex, bool hide);
  87.     int hiddenSectionCount() const;
  88.     inline void hideSection(int logicalIndex);
  89.     inline void showSection(int logicalIndex);
  90.     int count() const;
  91.     int visualIndex(int logicalIndex) const;
  92.     int logicalIndex(int visualIndex) const;
  93.     void setMovable(bool movable);
  94.     bool isMovable() const;
  95.     void setClickable(bool clickable);
  96.     bool isClickable() const;
  97.     void setHighlightSections(bool highlight);
  98.     bool highlightSections() const;
  99.     void setResizeMode(ResizeMode mode);
  100.     void setResizeMode(int logicalIndex, ResizeMode mode);
  101.     ResizeMode resizeMode(int logicalIndex) const;
  102.     int stretchSectionCount() const;
  103.     void setSortIndicatorShown(bool show);
  104.     bool isSortIndicatorShown() const;
  105.     void setSortIndicator(int logicalIndex, Qt::SortOrder order);
  106.     int sortIndicatorSection() const;
  107.     Qt::SortOrder sortIndicatorOrder() const;
  108.     bool stretchLastSection() const;
  109.     void setStretchLastSection(bool stretch);
  110.     bool cascadingSectionResizes() const;
  111.     void setCascadingSectionResizes(bool enable);
  112.     int defaultSectionSize() const;
  113.     void setDefaultSectionSize(int size);
  114.     int minimumSectionSize() const;
  115.     void setMinimumSectionSize(int size);
  116.     Qt::Alignment defaultAlignment() const;
  117.     void setDefaultAlignment(Qt::Alignment alignment);
  118.     void doItemsLayout();
  119.     bool sectionsMoved() const;
  120.     bool sectionsHidden() const;
  121. #ifndef QT_NO_DATASTREAM
  122.     QByteArray saveState() const;
  123.     bool restoreState(const QByteArray &state);
  124. #endif
  125.     void reset();
  126. public Q_SLOTS:
  127.     void setOffset(int offset);
  128.     void setOffsetToSectionPosition(int visualIndex);
  129.     void setOffsetToLastSection();
  130.     void headerDataChanged(Qt::Orientation orientation, int logicalFirst, int logicalLast);
  131. Q_SIGNALS:
  132.     void sectionMoved(int logicalIndex, int oldVisualIndex, int newVisualIndex);
  133.     void sectionResized(int logicalIndex, int oldSize, int newSize);
  134.     void sectionPressed(int logicalIndex);
  135.     void sectionClicked(int logicalIndex);
  136.     void sectionEntered(int logicalIndex);
  137.     void sectionDoubleClicked(int logicalIndex);
  138.     void sectionCountChanged(int oldCount, int newCount);
  139.     void sectionHandleDoubleClicked(int logicalIndex);
  140.     void sectionAutoResize(int logicalIndex, QHeaderView::ResizeMode mode);
  141.     void geometriesChanged();
  142.     void sortIndicatorChanged(int logicalIndex, Qt::SortOrder order);
  143. protected Q_SLOTS:
  144.     void updateSection(int logicalIndex);
  145.     void resizeSections();
  146.     void sectionsInserted(const QModelIndex &parent, int logicalFirst, int logicalLast);
  147.     void sectionsAboutToBeRemoved(const QModelIndex &parent, int logicalFirst, int logicalLast);
  148. protected:
  149.     QHeaderView(QHeaderViewPrivate &dd, Qt::Orientation orientation, QWidget *parent = 0);
  150.     void initialize();
  151.     void initializeSections();
  152.     void initializeSections(int start, int end);
  153.     void currentChanged(const QModelIndex &current, const QModelIndex &old);
  154.     bool event(QEvent *e);
  155.     void paintEvent(QPaintEvent *e);
  156.     void mousePressEvent(QMouseEvent *e);
  157.     void mouseMoveEvent(QMouseEvent *e);
  158.     void mouseReleaseEvent(QMouseEvent *e);
  159.     void mouseDoubleClickEvent(QMouseEvent *e);
  160.     bool viewportEvent(QEvent *e);
  161.     virtual void paintSection(QPainter *painter, const QRect &rect, int logicalIndex) const;
  162.     virtual QSize sectionSizeFromContents(int logicalIndex) const;
  163.     int horizontalOffset() const;
  164.     int verticalOffset() const;
  165.     void updateGeometries();
  166.     void scrollContentsBy(int dx, int dy);
  167.     void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight);
  168.     void rowsInserted(const QModelIndex &parent, int start, int end);
  169.     QRect visualRect(const QModelIndex &index) const;
  170.     void scrollTo(const QModelIndex &index, ScrollHint hint);
  171.     QModelIndex indexAt(const QPoint &p) const;
  172.     bool isIndexHidden(const QModelIndex &index) const;
  173.     QModelIndex moveCursor(CursorAction, Qt::KeyboardModifiers);
  174.     void setSelection(const QRect&, QItemSelectionModel::SelectionFlags);
  175.     QRegion visualRegionForSelection(const QItemSelection &selection) const;
  176.     void initStyleOption(QStyleOptionHeader *option) const;
  177. private:
  178.     Q_PRIVATE_SLOT(d_func(), void _q_sectionsRemoved(const QModelIndex &parent, int logicalFirst, int logicalLast))
  179.     Q_PRIVATE_SLOT(d_func(), void _q_layoutAboutToBeChanged())
  180.     Q_PRIVATE_SLOT(d_func(), void _q_layoutChanged())
  181.     Q_DECLARE_PRIVATE(QHeaderView)
  182.     Q_DISABLE_COPY(QHeaderView)
  183. };
  184. inline int QHeaderView::logicalIndexAt(int ax, int ay) const
  185. { return orientation() == Qt::Horizontal ? logicalIndexAt(ax) : logicalIndexAt(ay); }
  186. inline int QHeaderView::logicalIndexAt(const QPoint &apos) const
  187. { return logicalIndexAt(apos.x(), apos.y()); }
  188. inline void QHeaderView::hideSection(int alogicalIndex)
  189. { setSectionHidden(alogicalIndex, true); }
  190. inline void QHeaderView::showSection(int alogicalIndex)
  191. { setSectionHidden(alogicalIndex, false); }
  192. #endif // QT_NO_ITEMVIEWS
  193. QT_END_NAMESPACE
  194. QT_END_HEADER
  195. #endif // QHEADERVIEW_H