diff --git a/mainwindow.cpp b/mainwindow.cpp index cedd605..8baef83 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -5,6 +5,7 @@ #include #include #include +#include #include #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); diff --git a/mainwindow.h b/mainwindow.h index 6f25ceb..db56365 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -2,8 +2,10 @@ #define MAINWINDOW_H #include +#include #include #include +#include #include #include @@ -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);