64 lines
1.9 KiB
C
64 lines
1.9 KiB
C
|
#ifndef JSONTREEITEM_H
|
|||
|
#define JSONTREEITEM_H
|
|||
|
|
|||
|
#include <QList>
|
|||
|
|
|||
|
//对于多种结构,可以写一个item抽象父类
|
|||
|
//我这个Item比较简单,基本都是靠外部来设置
|
|||
|
class JsonTreeItem
|
|||
|
{
|
|||
|
public:
|
|||
|
//item的类型,None为无效的类型
|
|||
|
enum JsonItemType{
|
|||
|
None,
|
|||
|
Object,
|
|||
|
Array,
|
|||
|
Value
|
|||
|
};
|
|||
|
public:
|
|||
|
explicit JsonTreeItem(JsonTreeItem *parent=nullptr);
|
|||
|
explicit JsonTreeItem(const QHash<int,QVariant> &datas,JsonTreeItem::JsonItemType type,JsonTreeItem *parent=nullptr);
|
|||
|
~JsonTreeItem();
|
|||
|
|
|||
|
//增删操作
|
|||
|
bool insertChild(int row,JsonTreeItem *child);
|
|||
|
bool removeChild(int row);
|
|||
|
bool insertChildren(int row,int count);
|
|||
|
bool removeChildren(int row,int count);
|
|||
|
void appendChild(JsonTreeItem *child);
|
|||
|
void deleteAllChild();
|
|||
|
|
|||
|
//用于Model结构
|
|||
|
JsonTreeItem *childItem(int row);
|
|||
|
JsonTreeItem *parentItem();
|
|||
|
void setParentItem(JsonTreeItem *parent);
|
|||
|
int childCount() const;
|
|||
|
int columnCount() const;
|
|||
|
QVariant data(int column) const;
|
|||
|
void setData(int column,const QVariant &val);
|
|||
|
int row() const;
|
|||
|
bool editable(int column) const;
|
|||
|
//QHash<int,QByteArray> roleNames() const;
|
|||
|
|
|||
|
//便于Json操作
|
|||
|
QString key() const;
|
|||
|
void setKey(const QString &key);
|
|||
|
QVariant value() const;
|
|||
|
void setValue(const QVariant &value);
|
|||
|
JsonTreeItem::JsonItemType type() const;
|
|||
|
void setType(JsonTreeItem::JsonItemType type);
|
|||
|
|
|||
|
private:
|
|||
|
JsonTreeItem *theParentItem; //构造函数来初始化parent
|
|||
|
QList<JsonTreeItem*> theChildItems; //append来添加child
|
|||
|
JsonItemType theItemType;
|
|||
|
//hash内容
|
|||
|
//1:key
|
|||
|
//2:value
|
|||
|
//用hash是为了便于扩展,比如增加勾选列等
|
|||
|
//如果只是简单的key+value两行数据,就用QString+QVariant就行了
|
|||
|
QHash<int,QVariant> theItemDatas; //存放每列(角色)的内容(qml的tree使用角色)
|
|||
|
};
|
|||
|
|
|||
|
#endif // JSONTREEITEM_H
|