Files
QT_wuhan_YT/pages/chassis.h
T
2026-10-16 09:06:03 +08:00

53 lines
1.5 KiB
C++

#ifndef CHASSISPAGE_H
#define CHASSISPAGE_H
#include "base.h"
#include <QVector>
#include <QSet>
class TitleBar;
class StatusStrip;
class AlarmBanner;
class DataCard;
class ParamControl;
class QPushButton;
class QTimer;
// ===================== ⑥ 机器人底盘界面 =====================
class ChassisPage : public BasePage
{
Q_OBJECT
public:
explicit ChassisPage(AppContext* ctx, QWidget* parent = nullptr);
protected:
void showEvent(QShowEvent* ev) override; // 进入页面即切至行车模式
private slots:
void refresh();
void updateModeGating();
void onSpeedChanged(double v);
void onSpeedSaved();
private:
QPushButton* makeDirButton(const QString& text, const QString& dir);
void sendDirCommand(); // 按当前按住的方向组合下发(档位与转向可同时)
void updateAlarm(); // 横幅:通信异常 / 机械臂未回位时驱动底盘
bool armNotStowed() const; // 任一关节角偏离收起姿态(全零)
bool chassisDriving() const; // 面板方向键按住,或遥控器正在推杆
TitleBar* m_titleBar = nullptr;
StatusStrip* m_statusStrip = nullptr;
AlarmBanner* m_banner = nullptr;
DataCard* m_washCard = nullptr;
DataCard* m_armCard = nullptr;
DataCard* m_gasCard = nullptr;
DataCard* m_chassisCard = nullptr;
ParamControl* m_speed = nullptr;
QTimer* m_saveTimer = nullptr;
QVector<QPushButton*> m_dirButtons;
QSet<QString> m_heldDirs; // 当前按住的方向,可多键同时按
};
#endif // CHASSISPAGE_H