⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 qlistview_p.h

📁 qt-x11-opensource-src-4.1.4.tar.gz源码
💻 H
字号:
/******************************************************************************** Copyright (C) 1992-2006 Trolltech ASA. All rights reserved.**** This file is part of the QtGui module of the Qt Toolkit.**** This file may be used under the terms of the GNU General Public** License version 2.0 as published by the Free Software Foundation** and appearing in the file LICENSE.GPL included in the packaging of** this file.  Please review the following information to ensure GNU** General Public Licensing requirements will be met:** http://www.trolltech.com/products/qt/opensource.html**** If you are unsure which license is appropriate for your use, please** review the following information:** http://www.trolltech.com/products/qt/licensing.html or contact the** sales department at sales@trolltech.com.**** This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE** WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.******************************************************************************/#ifndef QLISTVIEW_P_H#define QLISTVIEW_P_H////  W A R N I N G//  -------------//// This file is not part of the Qt API.  It exists for the convenience// of other Qt classes.  This header file may change from version to// version without notice, or even be removed.//// We mean it.//#include "private/qabstractitemview_p.h"#include "qrubberband.h"#include "qbitarray.h"#include "qbsptree_p.h"#ifndef QT_NO_LISTVIEWclass QListViewItem{    friend class QListViewPrivate;public:    inline QListViewItem()        : x(-1), y(-1), w(0), h(0), indexHint(-1), visited(0xffff) {}    inline QListViewItem(const QListViewItem &other)        : x(other.x), y(other.y), w(other.w), h(other.h),          indexHint(other.indexHint), visited(other.visited) {}    inline QListViewItem(QRect r, int i)        : x(r.x()), y(r.y()), w(r.width()), h(r.height()),          indexHint(i), visited(0xffff) {}    inline bool operator==(const QListViewItem &other) const {        return (x == other.x && y == other.y && w == other.w && h == other.h &&                indexHint == other.indexHint); }    inline bool operator!=(const QListViewItem &other) const        { return !(*this == other); }    inline bool isValid() const        { return (x > -1) && (y > -1) && (w > 0) && (h > 0) && (indexHint > -1); }    inline void invalidate()        { x = -1; y = -1; w = 0; h = 0; }    inline void resize(const QSize &size)        { w = size.width(); h = size.height(); }    inline void move(const QPoint &position)        { x = position.x(); y = position.y(); }private:    inline QRect rect() const        { return QRect(x, y, w, h); }    int x, y;    short w, h;    mutable int indexHint;    uint visited : 16;};class QListViewPrivate: public QAbstractItemViewPrivate{    Q_DECLARE_PUBLIC(QListView)public:    QListViewPrivate();    ~QListViewPrivate() {}    void clear();    void prepareItemsLayout();    QPoint initStaticLayout(const QRect &bounds, int spacing, int first);    QPoint initDynamicLayout(const QRect &bounds, int spacing, int first);    void initBspTree(const QSize &contents);    bool doItemsLayout(int num);    void doItemsLayout(const QRect &bounds, const QModelIndex &first, const QModelIndex &last);    void doStaticLayout(const QRect &bounds, int first, int last);    void doDynamicLayout(const QRect &bounds, int first, int last);    void intersectingDynamicSet(const QRect &area) const;    void intersectingStaticSet(const QRect &area) const;    inline void intersectingSet(const QRect &area, bool doLayout = true) const {        if (doLayout) executePostedLayout();        QRect a = (q_func()->isRightToLeft() ? flipX(area) : area);        if (movement == QListView::Static) intersectingStaticSet(a);        else intersectingDynamicSet(a);    }    void createItems(int to);    void drawItems(QPainter *painter, const QVector<QModelIndex> &indexes) const;    QRect itemsRect(const QVector<QModelIndex> &indexes) const;    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(); }    QListViewItem indexToListViewItem(const QModelIndex &index) const;    inline QModelIndex listViewItemToIndex(const QListViewItem &item) const        { return model->index(itemIndex(item), column, root); }    int itemIndex(const QListViewItem &item) const;    static void addLeaf(QVector<int> &leaf, const QRect &area,                        uint visited, QBspTree::Data data);    void insertItem(int index, QListViewItem &item);    void removeItem(int index);    void moveItem(int index, const QPoint &dest);    QPoint snapToGrid(const QPoint &pos) const;    QRect mapToViewport(const QRect &rect) const;    QPoint draggedItemsDelta() const;    QRect draggedItemsRect() 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 (movement == QListView::Static)            return index.isValid();        return true;    }    QRect elasticBand;    bool wrap;    int spacing;    QSize gridSize;    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    };    uint modeProperties : 8;    QSize contentsSize;    QRect layoutBounds;    // used when laying out in batches    int batchStartRow;    int batchSavedDeltaSeg;    int batchSavedPosition;    // used for intersecting set    mutable QVector<QModelIndex> intersectVector;    // used when items are movable    QBspTree tree;    QVector<QListViewItem> items;    QBitArray moved;    // used when items are static    QVector<int> flowPositions;    QVector<int> segmentPositions;    QVector<int> segmentStartRows;    // timers    QBasicTimer batchLayoutTimer;    // used when dragging    QVector<QModelIndex> draggedItems; // indices to the tree.itemVector    mutable QPoint draggedItemsPos;    // used for hidden items    QVector<int> hiddenRows;    int column;    bool uniformItemSizes;    mutable QSize cachedItemSize;};#endif // QT_NO_LISTVIEW#endif // QLISTVIEW_P_H

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -