详情展示的设计
This commit is contained in:
parent
a081673e48
commit
86d142cb29
|
@ -5,6 +5,7 @@
|
||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
#include <QRandomGenerator>
|
#include <QRandomGenerator>
|
||||||
#include <QSplitter>
|
#include <QSplitter>
|
||||||
|
#include <QTime>
|
||||||
#include <QVBoxLayout>
|
#include <QVBoxLayout>
|
||||||
|
|
||||||
#define GROUP_COVER0_PATH Qt::UserRole + 1
|
#define GROUP_COVER0_PATH Qt::UserRole + 1
|
||||||
|
@ -21,7 +22,9 @@ CoreHost host;
|
||||||
MainWindow::MainWindow(QWidget* parent)
|
MainWindow::MainWindow(QWidget* parent)
|
||||||
: QMainWindow(parent), groups_view(new QListView(this)),
|
: QMainWindow(parent), groups_view(new QListView(this)),
|
||||||
groups_list(new QStandardItemModel(this)), items_view(new QListView(this)),
|
groups_list(new QStandardItemModel(this)), items_view(new QListView(this)),
|
||||||
items_list(new QStandardItemModel(this))
|
items_list(new QStandardItemModel(this)), details_panel(new QSplitter(Qt::Vertical, this)),
|
||||||
|
cover_display(new QLabel(this)), details_view(new QTableView(this)), details_model(new QStandardItemModel(this)),
|
||||||
|
labels_view(new QTableView(this)), labels_model(new QStandardItemModel(this))
|
||||||
{
|
{
|
||||||
setMinimumSize(800, 600);
|
setMinimumSize(800, 600);
|
||||||
|
|
||||||
|
@ -38,7 +41,7 @@ MainWindow::MainWindow(QWidget* parent)
|
||||||
groups_list->setHorizontalHeaderLabels(QStringList() << "数量"
|
groups_list->setHorizontalHeaderLabels(QStringList() << "数量"
|
||||||
<< "名称");
|
<< "名称");
|
||||||
groups_view->setItemDelegate(new GroupDisplayDelegate);
|
groups_view->setItemDelegate(new GroupDisplayDelegate);
|
||||||
groups_view->setMovement(QListView::Free);
|
groups_view->setMovement(QListView::Snap);
|
||||||
init_groups_list(groups_list);
|
init_groups_list(groups_list);
|
||||||
|
|
||||||
items_view->setItemDelegate(new ItemDisplayDelegate());
|
items_view->setItemDelegate(new ItemDisplayDelegate());
|
||||||
|
@ -46,6 +49,19 @@ MainWindow::MainWindow(QWidget* parent)
|
||||||
items_view->setResizeMode(QListView::Adjust);
|
items_view->setResizeMode(QListView::Adjust);
|
||||||
|
|
||||||
connect(groups_view, &QListView::clicked, this, &MainWindow::init_items_present);
|
connect(groups_view, &QListView::clicked, this, &MainWindow::init_items_present);
|
||||||
|
|
||||||
|
details_view->setModel(details_model);
|
||||||
|
labels_view->setModel(labels_model);
|
||||||
|
cover_display->setMinimumSize(200, 300);
|
||||||
|
|
||||||
|
splitter->addWidget(details_panel);
|
||||||
|
|
||||||
|
details_panel->addWidget(cover_display);
|
||||||
|
auto tabs = new QTabWidget(this);
|
||||||
|
details_panel->addWidget(tabs);
|
||||||
|
|
||||||
|
tabs->addTab(details_view, "书籍详情");
|
||||||
|
tabs->addTab(labels_view, "标签编辑");
|
||||||
}
|
}
|
||||||
|
|
||||||
MainWindow::~MainWindow()
|
MainWindow::~MainWindow()
|
||||||
|
@ -70,7 +86,8 @@ MainWindow::init_groups_list(QStandardItemModel* model)
|
||||||
void
|
void
|
||||||
MainWindow::init_items_present(const QModelIndex& index)
|
MainWindow::init_items_present(const QModelIndex& index)
|
||||||
{
|
{
|
||||||
QRandomGenerator gen;
|
items_list->clear();
|
||||||
|
QRandomGenerator gen(QTime::currentTime().second());
|
||||||
for (int idx = 0; idx < 200; ++idx) {
|
for (int idx = 0; idx < 200; ++idx) {
|
||||||
auto item = new QStandardItem("随机名称");
|
auto item = new QStandardItem("随机名称");
|
||||||
item->setData((gen.generate() % 2 == 1 ? ":/imgs/default/cover.jpg" : ":/imgs/default/cover_item.jpg"), ITEM_ICON_PATH);
|
item->setData((gen.generate() % 2 == 1 ? ":/imgs/default/cover.jpg" : ":/imgs/default/cover_item.jpg"), ITEM_ICON_PATH);
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
#define MAINWINDOW_H
|
#define MAINWINDOW_H
|
||||||
|
|
||||||
#include <QItemDelegate>
|
#include <QItemDelegate>
|
||||||
|
#include <QLabel>
|
||||||
#include <QListView>
|
#include <QListView>
|
||||||
#include <QMainWindow>
|
#include <QMainWindow>
|
||||||
|
#include <QSplitter>
|
||||||
#include <QStandardItemModel>
|
#include <QStandardItemModel>
|
||||||
#include <QTableView>
|
#include <QTableView>
|
||||||
|
|
||||||
|
@ -49,6 +51,13 @@ private:
|
||||||
QStandardItemModel* const groups_list;
|
QStandardItemModel* const groups_list;
|
||||||
QListView* const items_view;
|
QListView* const items_view;
|
||||||
QStandardItemModel* const items_list;
|
QStandardItemModel* const items_list;
|
||||||
|
QSplitter* const details_panel;
|
||||||
|
|
||||||
|
QLabel* const cover_display;
|
||||||
|
QTableView* const details_view;
|
||||||
|
QStandardItemModel* const details_model;
|
||||||
|
QTableView* const labels_view;
|
||||||
|
QStandardItemModel* const labels_model;
|
||||||
|
|
||||||
void init_groups_list(QStandardItemModel* model);
|
void init_groups_list(QStandardItemModel* model);
|
||||||
void init_items_present(const QModelIndex& index);
|
void init_items_present(const QModelIndex& index);
|
||||||
|
|
Loading…
Reference in New Issue