diff --git a/include/mainScene.h b/include/mainScene.h index c8efcd3..cec9a83 100644 --- a/include/mainScene.h +++ b/include/mainScene.h @@ -29,6 +29,8 @@ public: */ void SetStopScene(int node_number); + void ResetBus(); + /** * 开始公交车动画 * @param direction 公交车前进的方向 diff --git a/src/BusStrategyBase.cpp b/src/BusStrategyBase.cpp index 10519fd..adfd2b8 100644 --- a/src/BusStrategyBase.cpp +++ b/src/BusStrategyBase.cpp @@ -96,7 +96,10 @@ void BusStrategyBase::GetBusDirectionSlot() break; } - emit BusRunningSignal(bus_model->direction, duration); + if(status == BUS_RUNNING) + { + emit BusRunningSignal(bus_model->direction, duration); + } } void BusStrategyBase::HandleQuery() diff --git a/src/BusWidget.cpp b/src/BusWidget.cpp index 6b20773..2014da4 100644 --- a/src/BusWidget.cpp +++ b/src/BusWidget.cpp @@ -28,6 +28,9 @@ BusWidget::~BusWidget() void BusWidget::ResetBusPos(PosPair *s, int num) { + // 先停止一下动画 + animation->stop(); + pos_pairs = s; pos = 0; node_num = num; diff --git a/src/centralwidget.cpp b/src/centralwidget.cpp index 65faf1b..08a5fe2 100644 --- a/src/centralwidget.cpp +++ b/src/centralwidget.cpp @@ -56,6 +56,34 @@ void CentralWidget::SetStrategyLabel(int strategy) ui->strategy_label->setText(name); } +void CentralWidget::ResetOutput() +{ + // 清除日志输出 + ui->text_output->clear(); + + // 重设公交车位置 + scene_manager->ResetBus(); + + // 删除请求列表的所有元素 + auto first_item = query_items.begin(); + int query_id = 1; + first_item++; + + for(auto itor = first_item; itor != query_items.end(); itor++) + { + QListWidgetItem *deleted_item = ui->query_list->takeItem(query_id); + + delete deleted_item; + delete *itor; + query_id++; + } + + // 保留第一个的表头指针 + QueryListItem *column_name = query_items.front(); + query_items.clear(); + query_items.push_back(column_name); +} + void CentralWidget::SetControlConnection() { // 设置添加请求事件的连接 diff --git a/src/header/centralwidget.h b/src/header/centralwidget.h index d11f4f0..20bd85b 100644 --- a/src/header/centralwidget.h +++ b/src/header/centralwidget.h @@ -44,6 +44,11 @@ public: */ void SetStrategyLabel(int strategy); + /** + * 清除输出信息 + */ + void ResetOutput(); + signals: /** * 添加一个请求的信号 diff --git a/src/mainScene.cpp b/src/mainScene.cpp index e6888f2..a2346dc 100644 --- a/src/mainScene.cpp +++ b/src/mainScene.cpp @@ -77,6 +77,12 @@ void SceneManager::SetStopScene(int node_number) scene->addItem(bus->item); } +void SceneManager::ResetBus() +{ + + bus->ResetBusPos(stop_pos_pairs, stop_node_number); +} + void SceneManager::ClearStopScene() { // 从画布中移除所有的站点图片 diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index 89657d6..1e35e37 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -127,11 +127,19 @@ void MainWindow::ReadConfigFileButtonClicked() void MainWindow::RunBusClicked() { - emit RunBusSignal(); + if (controller == nullptr) + { + QMessageBox::warning(this, "警告", "未读取配置文件"); + } + else + { + emit RunBusSignal(); + } } void MainWindow::StopBusClicked() { + central_widget->ResetOutput(); emit StopBusSignal(); }