详情展示的设计
This commit is contained in:
parent
a081673e48
commit
86d142cb29
|
@ -5,6 +5,7 @@
|
|||
#include <QPainter>
|
||||
#include <QRandomGenerator>
|
||||
#include <QSplitter>
|
||||
#include <QTime>
|
||||
#include <QVBoxLayout>
|
||||
|
||||
#define GROUP_COVER0_PATH Qt::UserRole + 1
|
||||
|
@ -21,7 +22,9 @@ CoreHost host;
|
|||
MainWindow::MainWindow(QWidget* parent)
|
||||
: QMainWindow(parent), groups_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);
|
||||
|
||||
|
@ -38,7 +41,7 @@ MainWindow::MainWindow(QWidget* parent)
|
|||
groups_list->setHorizontalHeaderLabels(QStringList() << "数量"
|
||||
<< "名称");
|
||||
groups_view->setItemDelegate(new GroupDisplayDelegate);
|
||||
groups_view->setMovement(QListView::Free);
|
||||
groups_view->setMovement(QListView::Snap);
|
||||
init_groups_list(groups_list);
|
||||
|
||||
items_view->setItemDelegate(new ItemDisplayDelegate());
|
||||
|
@ -46,6 +49,19 @@ MainWindow::MainWindow(QWidget* parent)
|
|||
items_view->setResizeMode(QListView::Adjust);
|
||||
|
||||
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()
|
||||
|
@ -70,7 +86,8 @@ MainWindow::init_groups_list(QStandardItemModel* model)
|
|||
void
|
||||
MainWindow::init_items_present(const QModelIndex& index)
|
||||
{
|
||||
QRandomGenerator gen;
|
||||
items_list->clear();
|
||||
QRandomGenerator gen(QTime::currentTime().second());
|
||||
for (int idx = 0; idx < 200; ++idx) {
|
||||
auto item = new QStandardItem("随机名称");
|
||||
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
|
||||
|
||||
#include <QItemDelegate>
|
||||
#include <QLabel>
|
||||
#include <QListView>
|
||||
#include <QMainWindow>
|
||||
#include <QSplitter>
|
||||
#include <QStandardItemModel>
|
||||
#include <QTableView>
|
||||
|
||||
|
@ -49,6 +51,13 @@ private:
|
|||
QStandardItemModel* const groups_list;
|
||||
QListView* const items_view;
|
||||
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_items_present(const QModelIndex& index);
|
||||
|
|
Loading…
Reference in New Issue