-
Notifications
You must be signed in to change notification settings - Fork 366
/
Copy pathJsonTreeItem.h
63 lines (56 loc) · 1.91 KB
/
JsonTreeItem.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
#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