[Qt Model/View] QTreeView uses a custom model

1. Introduction

Encountered a problem: using QStandardItemModel has high memory overhead and slow loading

Great improvement after using the custom model

Second, the effect map

3. Source code

TreeItem

#ifndef TREEITEM_H
#define TREEITEM_H
#include <QVariant>
#include "czcore_global.h"

class CZCORESHARED_EXPORT TreeItem
{
public:
    explicit TreeItem(const QVariant &data, TreeItem *parentItem = 0);
    ~TreeItem();
    /**
     * @brief 在本节点下增加子节点
     * @param child
     */
    void appendChild(TreeItem *child);
    /**
     * @brief 清空所有节点
     */
    void removeChilds();

    /**
     * @brief 获取第row个子节点指针
     * @param row
     * @return
     */
    TreeItem *child(int row);
    /**
     * @brief 获取父节点指针
     * @return
     */
    TreeItem *parentItem();
    /**
     * @brief 子节点计数
     * @return
     */
    int childCount() const;
    /**
     * @brief 获取该节点是父节点的第几个子节点
     * @return
     */
    int row() const;

    void setData(const QVariant &data);
    QVariant data() const;

private:
    QList<TreeItem *> m_childItems;  /**< 子节点 */
    TreeItem *m_parentItem;          /**< 父节点 */
    QVariant m_data;                 /**< 存储数据 */
};

#endif // TREEITEM_H

To be done!

Guess you like

Origin blog.csdn.net/qq_40602000/article/details/123213938