-
Notifications
You must be signed in to change notification settings - Fork 18
Expand file tree
/
Copy pathgridview.cpp
More file actions
72 lines (60 loc) · 1.44 KB
/
gridview.cpp
File metadata and controls
72 lines (60 loc) · 1.44 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
64
65
66
67
68
69
70
71
72
#include "gridview.h"
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(new 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()) {
auto label = index.data(Qt::ToolTipRole).toString();
// 可以在这里处理选中项
}
}
}
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);
}