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 @@
+
+
@@ -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();
};