-
Notifications
You must be signed in to change notification settings - Fork 19
/
Copy pathListView.h
47 lines (41 loc) · 1.7 KB
/
ListView.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
#pragma once
#include <QComboBox>
#include <QFrame>
#include <QListView>
#include <QMainWindow>
#include <QStandardItem>
#include <QStandardItemModel>
#include <QVBoxLayout>
#include "Ai48.xpm"
#include "Avi48.xpm"
#include "Bmp48.xpm"
namespace Examples {
class Window1 : public QMainWindow {
Q_OBJECT
public:
Window1() {
layout.addWidget(&listView1, 1);
layout.addWidget(&comboBoxMode, 0);
model.setHorizontalHeaderLabels({"Name", "Type", "Size", "Comment"});
model.appendRow({new QStandardItem(QIcon(QPixmap(aviIcon48)), "First"), new QStandardItem("Movie"), new QStandardItem("5359"), new QStandardItem("This is the first item")});
model.appendRow({new QStandardItem(QIcon(QPixmap(aiIcon48)), "Second"), new QStandardItem("Picture"), new QStandardItem("1256"), new QStandardItem("This is the second item")});
model.appendRow({new QStandardItem(QIcon(QPixmap(bmpIcon48)), "Third"), new QStandardItem("Picture"), new QStandardItem("4284"), new QStandardItem("This is the third item")});
listView1.setModel(&model);
listView1.setViewMode(QListView::ViewMode::ListMode);
comboBoxMode.addItems({"List", "Icon"});
connect(&comboBoxMode, qOverload<int>(&QComboBox::currentIndexChanged), [&](int index) {
listView1.setViewMode(static_cast<QListView::ViewMode>(index));
listView1.setIconSize(listView1.viewMode() == QListView::ViewMode::IconMode ? QSize {48, 48} : QSize {16, 16});
});
setCentralWidget(&frame);
setWindowTitle("List view example");
resize(300, 300);
}
private:
QFrame frame;
QVBoxLayout layout {&frame};
QListView listView1;
QStandardItemModel model;
QComboBox comboBoxMode;
};
}