📄 qlistview_p.h
字号:
QBspTree tree; QVector<QListViewItem> items; QBitArray moved; QSize contentsSize; QVector<QModelIndex> draggedItems; // indices to the tree.itemVector mutable QPoint draggedItemsPos; // used when laying out in batches int batchStartRow; int batchSavedDeltaSeg; void dataChanged(const QModelIndex &topLeft, const QModelIndex &bottomRight); bool doBatchedItemLayout(const QListViewLayoutInfo &info, int max); void initBspTree(const QSize &contents); QPoint initDynamicLayout(const QListViewLayoutInfo &info); void doDynamicLayout(const QListViewLayoutInfo &info); void intersectingDynamicSet(const QRect &area) const; static void addLeaf(QVector<int> &leaf, const QRect &area, uint visited, QBspTree::Data data); void insertItem(int index); void removeItem(int index); void moveItem(int index, const QPoint &dest); int itemIndex(const QListViewItem &item) const; void createItems(int to); void drawItems(QPainter *painter, const QVector<QModelIndex> &indexes) const; QRect itemsRect(const QVector<QModelIndex> &indexes) const; QPoint draggedItemsDelta() const; QRect draggedItemsRect() const; QPoint snapToGrid(const QPoint &pos) const; void scrollElasticBandBy(int dx, int dy); QListViewItem indexToListViewItem(const QModelIndex &index) const; void clear();};class QListViewPrivate: public QAbstractItemViewPrivate{ Q_DECLARE_PUBLIC(QListView)public: QListViewPrivate(); ~QListViewPrivate(); void clear(); void prepareItemsLayout(); bool doItemsLayout(int num); inline void intersectingSet(const QRect &area, bool doLayout = true) const { if (doLayout) executePostedLayout(); QRect a = (q_func()->isRightToLeft() ? flipX(area.normalized()) : area.normalized()); if (viewMode == QListView::ListMode) staticListView->intersectingStaticSet(a); else dynamicListView->intersectingDynamicSet(a); } // ### FIXME: inline void resetBatchStartRow() { if (viewMode == QListView::ListMode) staticListView->batchStartRow = 0; else dynamicListView->batchStartRow = 0; } inline int batchStartRow() const { return (viewMode == QListView::ListMode ? staticListView->batchStartRow : dynamicListView->batchStartRow); } inline QSize contentsSize() const { return (viewMode == QListView::ListMode ? staticListView->contentsSize : dynamicListView->contentsSize); } inline void setContentsSize(int w, int h) { if (viewMode == QListView::ListMode) staticListView->contentsSize = QSize(w, h); else dynamicListView->contentsSize = QSize(w, h); } inline int flipX(int x) const { return qMax(viewport->width(), contentsSize().width()) - x; } inline QPoint flipX(const QPoint &p) const { return QPoint(flipX(p.x()), p.y()); } inline QRect flipX(const QRect &r) const { return QRect(flipX(r.x()) - r.width(), r.y(), r.width(), r.height()); } inline QRect viewItemRect(const QListViewItem &item) const { if (q_func()->isRightToLeft()) return flipX(item.rect()); return item.rect(); } int itemIndex(const QListViewItem &item) const; QListViewItem indexToListViewItem(const QModelIndex &index) const; inline QModelIndex listViewItemToIndex(const QListViewItem &item) const { return model->index(itemIndex(item), column, root); } QRect mapToViewport(const QRect &rect, bool greedy = false) const; QModelIndex closestIndex(const QPoint &target, const QVector<QModelIndex> &candidates) const; QSize itemSize(const QStyleOptionViewItem &option, const QModelIndex &index) const; bool selectionAllowed(const QModelIndex &index) const { if (viewMode == QListView::ListMode && !showElasticBand) return index.isValid(); return true; } int horizontalScrollToValue(const QModelIndex &index, const QRect &rect, QListView::ScrollHint hint) const; int verticalScrollToValue(const QModelIndex &index, const QRect &rect, QListView::ScrollHint hint) const; QItemSelection selection(const QRect &rect) const; inline void setGridSize(const QSize &size) { grid = size; } inline QSize gridSize() const { return grid; } inline void setWrapping(bool b) { wrap = b; } inline bool isWrapping() const { return wrap; } inline void setSpacing(int s) { space = s; } inline int spacing() const { return space; } inline void setSelectionRectVisible(bool visible) { showElasticBand = visible; } inline bool isSelectionRectVisible() const { return showElasticBand; } void scrollElasticBandBy(int dx, int dy); // ### FIXME: we only need one at a time QDynamicListViewBase *dynamicListView; QStaticListViewBase *staticListView; // ### FIXME: see if we can move the members into the dynamic/static classes bool wrap; int space; QSize grid; QListView::Flow flow; QListView::Movement movement; QListView::ResizeMode resizeMode; QListView::LayoutMode layoutMode; QListView::ViewMode viewMode; // the properties controlling the // icon- or list-view modes enum ModeProperties { Wrap = 1, Spacing = 2, GridSize = 4, Flow = 8, Movement = 16, ResizeMode = 32, SelectionRectVisible = 64 }; uint modeProperties : 8; QRect layoutBounds; // used for intersecting set mutable QVector<QModelIndex> intersectVector; // timers QBasicTimer batchLayoutTimer; // used for hidden items QVector<int> hiddenRows; int column; bool uniformItemSizes; mutable QSize cachedItemSize; int batchSize; QRect elasticBand; bool showElasticBand;};// inline implementationsinline int QCommonListViewBase::spacing() const { return dd->spacing(); }inline bool QCommonListViewBase::isWrapping() const { return dd->isWrapping(); }inline QSize QCommonListViewBase::gridSize() const { return dd->gridSize(); }inline QListView::Flow QCommonListViewBase::flow() const { return dd->flow; }inline QListView::Movement QCommonListViewBase::movement() const { return dd->movement; }inline QPoint QCommonListViewBase::offset() const { return dd->offset(); }inline QPoint QCommonListViewBase::pressedPosition() const { return dd->pressedPosition; }inline bool QCommonListViewBase::uniformItemSizes() const { return dd->uniformItemSizes; }inline int QCommonListViewBase::column() const { return dd->column; }inline int QCommonListViewBase::verticalScrollBarValue() const { return qq->verticalScrollBar()->value(); }inline int QCommonListViewBase::horizontalScrollBarValue() const { return qq->horizontalScrollBar()->value(); }inline QListView::ScrollMode QCommonListViewBase::verticalScrollMode() const { return qq->verticalScrollMode(); }inline QListView::ScrollMode QCommonListViewBase::horizontalScrollMode() const { return qq->horizontalScrollMode(); }inline QModelIndex QCommonListViewBase::modelIndex(int row) const { return dd->model->index(row, dd->column, dd->root); }inline int QCommonListViewBase::rowCount() const { return dd->model->rowCount(dd->root); }inline QStyleOptionViewItemV3 QCommonListViewBase::viewOptions() const { return dd->viewOptionsV3(); }inline QWidget *QCommonListViewBase::viewport() const { return dd->viewport; }inline QRect QCommonListViewBase::clipRect() const { return dd->clipRect(); }inline QSize QCommonListViewBase::cachedItemSize() const { return dd->cachedItemSize; }inline QRect QCommonListViewBase::viewItemRect(const QListViewItem &item) const { return dd->viewItemRect(item); }inline QSize QCommonListViewBase::itemSize(const QStyleOptionViewItemV2 &opt, const QModelIndex &idx) const { return dd->itemSize(opt, idx); }inline QAbstractItemDelegate *QCommonListViewBase::delegate(const QModelIndex &idx) const { return dd->delegateForIndex(idx); }inline bool QCommonListViewBase::isHidden(int row) const { return dd->hiddenRows.contains(row); }inline int QCommonListViewBase::hiddenCount() const { return dd->hiddenRows.count(); }inline void QCommonListViewBase::clearIntersections() const { dd->intersectVector.clear(); }inline void QCommonListViewBase::appendToIntersections(const QModelIndex &idx) const { dd->intersectVector.append(idx); }inline bool QCommonListViewBase::isRightToLeft() const { return qq->isRightToLeft(); }#endif // QT_NO_LISTVIEW#endif // QLISTVIEW_P_H
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -