Qt中自定义只读TreeView的Model

通过学习Qt自带的例子和帮助文档,简化了其中的一个例子,来学习如何自定义TreeView的Model。
以下是自定义一个只读的TreeView的Model,实际中可以直接复制过来使用,避免重复造轮子。
官方的文档一直都是很好的学习资料,尤其是官方的例子和help文档。本文参考了官方的Simple Tree Model Example例子。
在这里插入图片描述
这是简单的树状结构,可以看出行的结构,但是缺乏列的信息。
在这里插入图片描述
在这里插入图片描述
这样我们就清楚treeitem中的成员变量:QList m_itemData;中存储的链表的情况了。

treeitem.h文件:

#ifndef TREEITEM_H
#define TREEITEM_H

#include <QList>
#include <QVariant>

class TreeItem
{
   
public:
    explicit TreeItem(const QList<QVariant> &data, TreeItem *parentItem = nullptr);
    ~TreeItem();

    void appendChild(TreeItem *child);

    TreeItem *child(int row);
    int childCount() const;
    int columnCount() const;
    QVariant data(int column) const;
    int row() const;
    TreeItem *parentItem();

private:
    QList<TreeItem*> m_childItems;
    QList<QVariant> m_itemData;
    TreeItem *m_parentItem;
};

#endif // TREEITEM_H

treeitem.cpp文件:

#include <QStringList>
#include "treeitem.h"

TreeItem::TreeItem(const QList<QVariant> &data, TreeItem *parent)
{
   
    m_parentItem = parent;
    m_itemData = data;
}

TreeItem::~TreeItem()
{
   
    qDeleteAll(m_childItems);
}

void TreeItem::appendChild(TreeItem *item)
{
   
    m_childItems.append(item);
}

TreeItem *TreeItem::child(int row)
{
   
    return m_childItems.value(row);
}

int TreeItem::childCount() const
{
   
    return m_childItems.count();
}

int TreeItem::columnCount() const
{
   
    return m_itemData.count();
}

QVariant TreeItem::data(int column) const
{
   
    return m_itemData.value(column);
}

TreeItem *TreeItem::parentItem()
{
   
    return m_parentItem;
}

int TreeItem::row() const
{
   
    if (m_parentItem)
        return m_parentItem->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值