-
Notifications
You must be signed in to change notification settings - Fork 14
/
Copy pathnormaltreeview.cc
96 lines (81 loc) · 2.25 KB
/
normaltreeview.cc
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
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#include "normaltreeview.hpp"
#include "fileitem.hpp"
#include <QHeaderView>
NormalTreeModel::NormalTreeModel(QObject *parent)
: BaseTreeModel(parent)
{
setTr();
}
void NormalTreeModel::setTr()
{
m_headerList
= QStringList{"", tr("名称"), tr("位置"), tr("修改时间"), tr("文件类型"), tr("大小")};
}
void NormalTreeModel::setDatas(const QFileInfoList &fileInfos, bool depth)
{
clear();
TreeItem *root = rootItem();
for (const auto &fileInfo : std::as_const(fileInfos)) {
root->appendChild(new FileItem(fileInfo, depth));
}
emit layoutChanged();
}
auto NormalTreeModel::rowCount(const QModelIndex &idx) const -> int
{
return BaseTreeModel::rowCount(idx);
}
auto NormalTreeModel::headerData(int section, Qt::Orientation orientation, int role) const
-> QVariant
{
Q_UNUSED(orientation)
switch (role) {
case Qt::TextAlignmentRole: return Qt::AlignVCenter;
case Qt::CheckStateRole: {
switch (section) {
case 0: return true;
default: break;
}
} break;
case Qt::WhatsThisRole:
case Qt::ToolTipRole:
case Qt::EditRole:
case Qt::DisplayRole: {
if (section >= 0 && section < m_headerList.size()) {
return m_headerList.at(section);
}
} break;
default: break;
}
return {};
}
class NormalTreeView::NormalTreeViewPrivate
{
public:
explicit NormalTreeViewPrivate(QWidget *parent)
: owner(parent)
, model(new NormalTreeModel(owner))
{}
QWidget *owner;
NormalTreeModel *model;
};
NormalTreeView::NormalTreeView(QWidget *parent)
: TreeView(parent)
, d_ptr(new NormalTreeViewPrivate(this))
{
setupUI();
}
NormalTreeView::~NormalTreeView() = default;
void NormalTreeView::setDatas(const QFileInfoList &fileInfos)
{
d_ptr->model->setDatas(fileInfos, true);
}
void NormalTreeView::setupUI()
{
setModel(d_ptr->model);
setStyleSheet(
"QTreeView{border:none; show-decoration-selected: 0;}"
"QTreeView::item{height:50px; border: 1px solid transparent;show-decoration-selected: 0;}"
"QTreeView::item:hover{background:#EBF5FF;}"
"QTreeView::item:selected{background: #b8ceff; color:#222222;}"
"QTreeView::branch {selection-color: #b8ceff;}");
}