From 8cd607ec753f800476e823899fc1cabc9f879483 Mon Sep 17 00:00:00 2001 From: jackfiled Date: Wed, 29 Jun 2022 17:25:33 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E4=BA=86=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- include/BusWidget.h | 18 +++++++++++++++++- include/PosPair.h | 20 ++++++++++++++++++++ include/StrategyFactory.h | 5 +++++ include/define.h | 1 - include/mainScene.h | 13 +++++++++++++ include/queryListItem.h | 9 +++++++++ include/queryModel.h | 7 +++---- include/railsModel.h | 7 +++++++ src/header/centralwidget.h | 13 ++++++++++++- src/header/mainwindow.h | 22 +++++++++++++++++++++- 10 files changed, 107 insertions(+), 8 deletions(-) diff --git a/include/BusWidget.h b/include/BusWidget.h index 0e1adb0..572784b 100644 --- a/include/BusWidget.h +++ b/include/BusWidget.h @@ -32,9 +32,11 @@ public: class BusWidget { public: + /** + * 真正的公交车显示对象 + */ BusItem *item; - explicit BusWidget(); ~BusWidget(); @@ -54,10 +56,24 @@ public: void StartAnimation(int direction, int duration); private: + /** + * 存储各个站点位置对的数组 + */ PosPair *pos_pairs = nullptr; + + /** + * 动画对象 + */ QPropertyAnimation *animation; + /** + * 公交车所在的站点 + */ int pos = 0; + + /** + * 站点总数 + */ int node_num = 0; }; diff --git a/include/PosPair.h b/include/PosPair.h index c135d48..c36bf99 100644 --- a/include/PosPair.h +++ b/include/PosPair.h @@ -21,6 +21,7 @@ public: int pos_y; PosPair(); + /** * 获取两个站点之间的距离 * @param stop_number 站点的数量 @@ -47,10 +48,29 @@ public: int GetBusPosY() const; private: + /** + * 设定的轨道开始坐标x + */ const int stop_begin_x = 100; + + /** + * 设定的轨道开始坐标y + */ const int stop_begin_y = 80; + + /** + * 轨道的宽度 + */ const int stop_rail_width = 300; + + /** + * 轨道的高度 + */ const int stop_rail_height = 200; + + /** + * 公交车到站点的距离 + */ const int stop_bus_distance = 30; int distance = 0; diff --git a/include/StrategyFactory.h b/include/StrategyFactory.h index c99bfa5..cf509fc 100644 --- a/include/StrategyFactory.h +++ b/include/StrategyFactory.h @@ -15,6 +15,11 @@ class StrategyFactory { public: + /** + * 生成控制器的工厂函数 + * @param file_name 配置文件的名称 + * @return 控制器对象 + */ static BusStrategyBase *GetStrategy(const QString& file_name); }; diff --git a/include/define.h b/include/define.h index ab1b319..75a5664 100644 --- a/include/define.h +++ b/include/define.h @@ -13,7 +13,6 @@ #define BUS_SSTF 1 // 最短寻找时间优先 #define BUS_SCAN 2 // 顺便服务 #define BUS_RUNNING 0 -#define BUS_PAUSING 1 #define BUS_END 2 #endif //AUTO_BUS_GUI_DEFINE_H diff --git a/include/mainScene.h b/include/mainScene.h index cec9a83..4ec548d 100644 --- a/include/mainScene.h +++ b/include/mainScene.h @@ -12,15 +12,22 @@ #include "PosPair.h" #include "BusWidget.h" +/** + * 控制画图的管理类 + */ class SceneManager { public: + /** + * 场景对象 + */ QGraphicsScene *scene; /** * 构造函数,同时生成站点 */ explicit SceneManager(); + ~SceneManager(); /** @@ -29,6 +36,9 @@ public: */ void SetStopScene(int node_number); + /** + * 重设公交车的位置 + */ void ResetBus(); /** @@ -44,6 +54,9 @@ private: */ QGraphicsPixmapItem *pixmap_items; + /** + * 站点名称的对象数组 + */ QGraphicsSimpleTextItem *name_items; /** diff --git a/include/queryListItem.h b/include/queryListItem.h index 267be28..d362da4 100644 --- a/include/queryListItem.h +++ b/include/queryListItem.h @@ -11,6 +11,9 @@ #include "define.h" +/** + * 请求列表中显示请求的控件 + */ class QueryListItem : public QWidget { Q_OBJECT @@ -19,8 +22,14 @@ public: void SetColumnName(); + /** + * 请求的类别 + */ int query_type; + /** + * 目标的站点id + */ int target_node_id; private: diff --git a/include/queryModel.h b/include/queryModel.h index b11791b..331f123 100644 --- a/include/queryModel.h +++ b/include/queryModel.h @@ -11,14 +11,17 @@ struct bus_query { * 请求产生的时间 */ int time; + /** * 请求的类型 */ int type; + /** * 请求产生/指向的站点 */ rail_node_t *node; + /** * 指向下一个请求的指针 */ @@ -32,10 +35,6 @@ class QueryModel public: bus_query_t *queries = nullptr; - /** - * 析构函数 - * 负责释放内存 - */ ~QueryModel(); /** diff --git a/include/railsModel.h b/include/railsModel.h index 839d98c..6330598 100644 --- a/include/railsModel.h +++ b/include/railsModel.h @@ -11,18 +11,22 @@ struct rail_node{ * 站点的编号 */ int id; + /** * 距离上一个站点的距离 */ int last_node_distance; + /** * 距离下一个站点的距离 */ int next_node_distance; + /** * 指向上一个站点的指针 */ struct rail_node* last_node; + /** * 指向下一个站点的指针 */ @@ -45,6 +49,9 @@ public: */ int node_num; + /** + * 轨道的总长度 + */ int total_distance; explicit RailsModel(); diff --git a/src/header/centralwidget.h b/src/header/centralwidget.h index 20bd85b..0c5fbc3 100644 --- a/src/header/centralwidget.h +++ b/src/header/centralwidget.h @@ -65,7 +65,8 @@ public slots: /** * 处理删除一个请求的槽函数 - * @param query 请求指针 + * @param query_type 请求的类型 + * @param node_id 请求的站点id */ void DeleteQueryItemSlot(int query_type, int node_id); @@ -80,6 +81,12 @@ public slots: */ void PrintStateSlot(const QString& string); + /** + * 开始公交车动画的槽函数 + * 实际上就是将公交车移动到上一个或者下一个站点 + * @param direction 公交车前进的方向 + * @param duration 动画需要持续的时间 + */ void BeginBusAnimationSlot(int direction, int duration); private: @@ -93,6 +100,9 @@ private: */ SceneManager *scene_manager; + /** + * 控制器 + */ BusStrategyBase *controller = nullptr; /** @@ -123,6 +133,7 @@ private: /** * 设置站点选择下拉栏 + * @param 站点的个数 */ void SetRailsComboBox(int node_num); diff --git a/src/header/mainwindow.h b/src/header/mainwindow.h index 7f05470..43b93af 100644 --- a/src/header/mainwindow.h +++ b/src/header/mainwindow.h @@ -79,6 +79,11 @@ public slots: */ void OneTickSlot(); + /** + * 开始公交车行驶计时器的槽函数 + * @param direction 公交车前进的防线 此处不需要 + * @param duration 持续的时间 + */ void BeginBusTimerSlot([[maybe_unused]] int direction, int duration); private: @@ -97,15 +102,27 @@ private: */ CentralWidget *central_widget; + /** + * 控制器工作的线程 + */ QThread *worker_thread; + /** + * 控制器指针 + */ BusStrategyBase *controller; + /** + * 时刻计时器 + * 每隔一个tick发出一个时钟信号 + */ QTimer *tick_timer; + /** + * 公交车计时器 + */ QTimer *bus_timer; - /** * 设置菜单栏的相关连接 */ @@ -116,6 +133,9 @@ private: */ void SetControlConnection(); + /** + * 开始多线程 + */ void BeginThread(); }; #endif //AUTO_BUS_GUI_MAIN_WINDOW_H