-
Notifications
You must be signed in to change notification settings - Fork 21
Expand file tree
/
Copy pathgridview.cc
More file actions
63 lines (51 loc) · 1.38 KB
/
Copy pathgridview.cc
File metadata and controls
63 lines (51 loc) · 1.38 KB
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
#include "gridview.hpp"
class GridView::GridViewPrivate
{
public:
explicit GridViewPrivate(GridView *parent) : q_ptr(parent), gridModel(new GridModel(parent)) {}
GridView *q_ptr;
GridModel *gridModel;
};
GridView::GridView(QWidget *parent)
: QListView(parent), d_ptr(std::make_unique<GridViewPrivate>(this))
{
setupUI();
buildConnect();
}
GridView::~GridView() = default;
void GridView::setCellList(const GridCellList &cellList)
{ d_ptr->gridModel->setCellList(cellList); }
void GridView::clearCells()
{ d_ptr->gridModel->clearCells(); }
void GridView::onSelectionChanged()
{
QItemSelectionModel *selModel = selectionModel();
if (!selModel) {
return;
}
const auto selectedIndexes = selModel->selectedIndexes();
for (const auto &index : selectedIndexes) {
if (index.isValid()) {
// 可通过 index.data(Qt::ToolTipRole) 获取单元格标签
}
}
}
void GridView::setupUI()
{
setFocusPolicy(Qt::NoFocus);
setFlow(LeftToRight);
setResizeMode(Adjust);
setViewMode(IconMode);
setSelectionMode(ExtendedSelection);
setSpacing(20);
// setUniformItemSizes(true);
// setWrapping(true);
setModel(d_ptr->gridModel);
}
void GridView::buildConnect()
{
connect(selectionModel(),
&QItemSelectionModel::selectionChanged,
this,
&GridView::onSelectionChanged);
}