auto_bus/src/header/centralwidget.h
2022-06-28 09:57:43 +08:00

120 lines
2.2 KiB
C++

//
// Created by ricardo on 2022/6/10.
//
#ifndef AUTO_BUS_GUI_CENTRAL_WIDGET_H
#define AUTO_BUS_GUI_CENTRAL_WIDGET_H
#include <QWidget>
#include "QListWidgetItem"
#include "string"
#include "list"
#include "QMessageBox"
#include "mainScene.h"
#include "queryListItem.h"
#include "BusStrategyBase.h"
QT_BEGIN_NAMESPACE
namespace Ui
{
class CentralWidget;
}
QT_END_NAMESPACE
class CentralWidget : public QWidget
{
Q_OBJECT
public:
explicit CentralWidget(QWidget *parent = nullptr);
~CentralWidget() override;
/**
* 重新设置控制器
* @param c 控制器指针
*/
void SetController(BusStrategyBase *c);
signals:
/**
* 添加一个请求的信号
*/
void AppendQuerySignal(int type, int node);
public slots:
/**
* 处理添加一个请求的槽函数
* @param query_type 请求的类型
* @param node_id 请求指向的站点id
*/
void AppendQueryItemSlot(int query_type, int node_id);
/**
* 处理删除一个请求的槽函数
* @param query 请求指针
*/
void DeleteQueryItemSlot(bus_query_t *query);
/**
* 处理点击添加请求按钮的槽函数
*/
void AddQueryButtonClicked();
private:
/**
* UI控件
*/
Ui::CentralWidget *ui;
/**
* 画图的场景管理器
*/
SceneManager *scene_manager;
BusStrategyBase *controller = nullptr;
/**
* 请求列表中的对象
*/
std::list<QueryListItem *> query_items;
/**
* 设置同控制器的连接
*/
void SetControlConnection();
/**
* 设置同控件的连接
*/
void SetWidgetConnection();
/**
* 初始化请求展示列表
* 展示表头的说明文字
*/
void SetupQueryList();
/**
* 清除展示对象占用的内存空间
*/
void DeleteQueryList();
/**
* 设置站点选择下拉栏
*/
void SetRailsComboBox(int node_num);
/**
* 处理轨道重新生成的槽函数
* 重绘轨道画面
* 重新设置站点选择下拉栏
* @param node_num
*/
void SetRailsScene(int node_num);
};
#endif //AUTO_BUS_GUI_CENTRAL_WIDGET_H