diff --git a/src/centralwidget.cpp b/src/centralwidget.cpp index a824f74..7f30ff2 100644 --- a/src/centralwidget.cpp +++ b/src/centralwidget.cpp @@ -15,10 +15,66 @@ CentralWidget::CentralWidget(QWidget *parent) : QWidget(parent), ui(new Ui::Cent scene_manager = new SceneManager(20); ui->main_canva->setScene(scene_manager->scene); + + SetupQueryList(); } CentralWidget::~CentralWidget() { + DeleteQueryList(); + delete scene_manager; delete ui; } + +void CentralWidget::SetupQueryList() +{ + // 设置请求列表的表头 + QueryListItem *column_name = new QueryListItem(1,1); + column_name->SetColumnName(); + + query_items.push_back(column_name); + + // 在列表中显示 + QListWidgetItem *widget_item = new QListWidgetItem; + ui->query_list->addItem(widget_item); + ui->query_list->setItemWidget(widget_item, column_name); +} + +void CentralWidget::DeleteQueryList() +{ + for(auto itor = query_items.begin(); itor != query_items.end(); ++itor) + { + delete *itor; + } + query_items.clear(); +} + +void CentralWidget::AppendQueryItem(int query_type, int node_id) +{ + QueryListItem *item = new QueryListItem(query_type, node_id); + + query_items.push_back(item); + + // 在列表中显示 + QListWidgetItem *widget_item = new QListWidgetItem; + ui->query_list->addItem(widget_item); + ui->query_list->setItemWidget(widget_item, item); +} + +void CentralWidget::DeleteQueryItem(int query_id) +{ + // 由于表头的存在,且请求的编号从1开始,请求的编号恰好就是请求在列表中的位置 + QListWidgetItem *deleted_widget = ui->query_list->takeItem(query_id); + + auto itor = query_items.begin(); + + for(int i = 0; i < query_id; i++) + { + ++itor; + } + + delete deleted_widget; + delete *itor; + query_items.erase(itor); +} \ No newline at end of file diff --git a/src/form/centralwidget.ui b/src/form/centralwidget.ui index 5084fb9..d6ae526 100644 --- a/src/form/centralwidget.ui +++ b/src/form/centralwidget.ui @@ -29,32 +29,6 @@ - - - - 659 - -1 - 201 - 411 - - - - - - - 测试输出 - - - - - - - 控制面板 - - - - - @@ -78,6 +52,105 @@ Qt::Horizontal + + + + 770 + 160 + 121 + 231 + + + + + + + + 12 + + + + 添加请求 + + + + + + + + 10 + + + + 请求类型 + + + + + + + + 顺时针上车 + + + + + 逆时针上车 + + + + + 下车 + + + + + + + + 目标站点 + + + + + + + + + + 创建请求 + + + + + + + + + 600 + 170 + 161 + 221 + + + + + + + + 12 + + + + 请求列表 + + + + + + + + diff --git a/src/form/mainwindow.ui b/src/form/mainwindow.ui index 3e16570..27bd9a3 100644 --- a/src/form/mainwindow.ui +++ b/src/form/mainwindow.ui @@ -41,7 +41,16 @@ + + + Run + + + + + + @@ -53,6 +62,21 @@ Exit + + + Run Bus + + + + + Pause Bus + + + + + Stop Bus + + diff --git a/src/header/centralwidget.h b/src/header/centralwidget.h index c02d4a3..ee6a496 100644 --- a/src/header/centralwidget.h +++ b/src/header/centralwidget.h @@ -6,8 +6,12 @@ #define AUTO_BUS_GUI_CENTRAL_WIDGET_H #include +#include "QListWidgetItem" #include "string" +#include "list" + #include "mainScene.h" +#include "queryListItem.h" QT_BEGIN_NAMESPACE namespace Ui @@ -26,11 +30,41 @@ public: ~CentralWidget() override; public slots: + /** + * 处理添加一个请求的槽函数 + * @param query_type 请求的类型 + * @param node_id 请求指向的站点id + */ + void AppendQueryItem(int query_type, int node_id); + void DeleteQueryItem(int query_id); private: + /** + * UI控件 + */ Ui::CentralWidget *ui; + + /** + * 画图的场景管理器 + */ SceneManager *scene_manager; + + /** + * 请求列表中的对象 + */ + std::list query_items; + + /** + * 初始化请求展示列表 + * 展示表头的说明文字 + */ + void SetupQueryList(); + + /** + * 清除展示对象占用的内存空间 + */ + void DeleteQueryList(); };