File indexing completed on 2026-07-27 09:50:03
0001
0002
0003
0004
0005 #ifndef QLISTVIEW_H
0006 #define QLISTVIEW_H
0007
0008 #include <QtWidgets/qtwidgetsglobal.h>
0009 #include <QtWidgets/qabstractitemview.h>
0010
0011 QT_REQUIRE_CONFIG(listview);
0012
0013 QT_BEGIN_NAMESPACE
0014
0015 class QListViewPrivate;
0016
0017 class Q_WIDGETS_EXPORT QListView : public QAbstractItemView
0018 {
0019 Q_OBJECT
0020 Q_PROPERTY(Movement movement READ movement WRITE setMovement)
0021 Q_PROPERTY(Flow flow READ flow WRITE setFlow)
0022 Q_PROPERTY(bool isWrapping READ isWrapping WRITE setWrapping)
0023 Q_PROPERTY(ResizeMode resizeMode READ resizeMode WRITE setResizeMode)
0024 Q_PROPERTY(LayoutMode layoutMode READ layoutMode WRITE setLayoutMode)
0025 Q_PROPERTY(int spacing READ spacing WRITE setSpacing)
0026 Q_PROPERTY(QSize gridSize READ gridSize WRITE setGridSize)
0027 Q_PROPERTY(ViewMode viewMode READ viewMode WRITE setViewMode)
0028 Q_PROPERTY(int modelColumn READ modelColumn WRITE setModelColumn)
0029 Q_PROPERTY(bool uniformItemSizes READ uniformItemSizes WRITE setUniformItemSizes)
0030 Q_PROPERTY(int batchSize READ batchSize WRITE setBatchSize)
0031 Q_PROPERTY(bool wordWrap READ wordWrap WRITE setWordWrap)
0032 Q_PROPERTY(bool selectionRectVisible READ isSelectionRectVisible WRITE setSelectionRectVisible)
0033 Q_PROPERTY(Qt::Alignment itemAlignment READ itemAlignment WRITE setItemAlignment)
0034
0035 public:
0036 enum Movement { Static, Free, Snap };
0037 Q_ENUM(Movement)
0038 enum Flow { LeftToRight, TopToBottom };
0039 Q_ENUM(Flow)
0040 enum ResizeMode { Fixed, Adjust };
0041 Q_ENUM(ResizeMode)
0042 enum LayoutMode { SinglePass, Batched };
0043 Q_ENUM(LayoutMode)
0044 enum ViewMode { ListMode, IconMode };
0045 Q_ENUM(ViewMode)
0046
0047 explicit QListView(QWidget *parent = nullptr);
0048 ~QListView();
0049
0050 void setMovement(Movement movement);
0051 Movement movement() const;
0052
0053 void setFlow(Flow flow);
0054 Flow flow() const;
0055
0056 void setWrapping(bool enable);
0057 bool isWrapping() const;
0058
0059 void setResizeMode(ResizeMode mode);
0060 ResizeMode resizeMode() const;
0061
0062 void setLayoutMode(LayoutMode mode);
0063 LayoutMode layoutMode() const;
0064
0065 void setSpacing(int space);
0066 int spacing() const;
0067
0068 void setBatchSize(int batchSize);
0069 int batchSize() const;
0070
0071 void setGridSize(const QSize &size);
0072 QSize gridSize() const;
0073
0074 void setViewMode(ViewMode mode);
0075 ViewMode viewMode() const;
0076
0077 void clearPropertyFlags();
0078
0079 bool isRowHidden(int row) const;
0080 void setRowHidden(int row, bool hide);
0081
0082 void setModelColumn(int column);
0083 int modelColumn() const;
0084
0085 void setUniformItemSizes(bool enable);
0086 bool uniformItemSizes() const;
0087
0088 void setWordWrap(bool on);
0089 bool wordWrap() const;
0090
0091 void setSelectionRectVisible(bool show);
0092 bool isSelectionRectVisible() const;
0093
0094 void setItemAlignment(Qt::Alignment alignment);
0095 Qt::Alignment itemAlignment() const;
0096
0097 QRect visualRect(const QModelIndex &index) const override;
0098 void scrollTo(const QModelIndex &index, ScrollHint hint = EnsureVisible) override;
0099 QModelIndex indexAt(const QPoint &p) const override;
0100
0101 void doItemsLayout() override;
0102 void reset() override;
0103 void setRootIndex(const QModelIndex &index) override;
0104
0105 Q_SIGNALS:
0106 void indexesMoved(const QModelIndexList &indexes);
0107
0108 protected:
0109 QListView(QListViewPrivate &, QWidget *parent = nullptr);
0110
0111 bool event(QEvent *e) override;
0112
0113 void scrollContentsBy(int dx, int dy) override;
0114
0115 void resizeContents(int width, int height);
0116 QSize contentsSize() const;
0117
0118 void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight,
0119 const QList<int> &roles = QList<int>()) override;
0120 void rowsInserted(const QModelIndex &parent, int start, int end) override;
0121 void rowsAboutToBeRemoved(const QModelIndex &parent, int start, int end) override;
0122
0123 void mouseMoveEvent(QMouseEvent *e) override;
0124 void mouseReleaseEvent(QMouseEvent *e) override;
0125 #if QT_CONFIG(wheelevent)
0126 void wheelEvent(QWheelEvent *e) override;
0127 #endif
0128
0129 void timerEvent(QTimerEvent *e) override;
0130 void resizeEvent(QResizeEvent *e) override;
0131 #if QT_CONFIG(draganddrop)
0132 void dragMoveEvent(QDragMoveEvent *e) override;
0133 void dragLeaveEvent(QDragLeaveEvent *e) override;
0134 void dropEvent(QDropEvent *e) override;
0135 void startDrag(Qt::DropActions supportedActions) override;
0136 #endif
0137
0138 void initViewItemOption(QStyleOptionViewItem *option) const override;
0139 void paintEvent(QPaintEvent *e) override;
0140
0141 int horizontalOffset() const override;
0142 int verticalOffset() const override;
0143 QModelIndex moveCursor(CursorAction cursorAction, Qt::KeyboardModifiers modifiers) override;
0144 QRect rectForIndex(const QModelIndex &index) const;
0145 void setPositionForIndex(const QPoint &position, const QModelIndex &index);
0146
0147 void setSelection(const QRect &rect, QItemSelectionModel::SelectionFlags command) override;
0148 QRegion visualRegionForSelection(const QItemSelection &selection) const override;
0149 QModelIndexList selectedIndexes() const override;
0150
0151 void updateGeometries() override;
0152
0153 bool isIndexHidden(const QModelIndex &index) const override;
0154
0155 void selectionChanged(const QItemSelection &selected, const QItemSelection &deselected) override;
0156 void currentChanged(const QModelIndex ¤t, const QModelIndex &previous) override;
0157
0158 QSize viewportSizeHint() const override;
0159
0160 private:
0161 int visualIndex(const QModelIndex &index) const;
0162 friend class QCommonListViewBase;
0163
0164 Q_DECLARE_PRIVATE(QListView)
0165 Q_DISABLE_COPY(QListView)
0166 };
0167
0168 QT_END_NAMESPACE
0169
0170 #endif