增加通讯协议
This commit is contained in:
+38
-35
@@ -1,6 +1,6 @@
|
||||
#include "statusstrip.h"
|
||||
#include "appcontext.h"
|
||||
#include "udpcommunication.h"
|
||||
#include "car.h"
|
||||
#include <QHBoxLayout>
|
||||
#include <QLabel>
|
||||
#include <QPushButton>
|
||||
@@ -10,54 +10,51 @@ StatusStrip::StatusStrip(AppContext* ctx, QWidget* parent)
|
||||
: QWidget(parent), m_ctx(ctx)
|
||||
{
|
||||
setObjectName("StatusStrip");
|
||||
setFixedHeight(94);
|
||||
setFixedHeight(120);
|
||||
setStyleSheet(QString("QWidget#StatusStrip{background-color:%1;border-top:1px solid %2;}")
|
||||
.arg(C::PANEL, C::BORDER));
|
||||
|
||||
QHBoxLayout* lay = new QHBoxLayout(this);
|
||||
lay->setContentsMargins(36, 0, 24, 0);
|
||||
lay->setSpacing(48);
|
||||
lay->setSpacing(40);
|
||||
|
||||
auto makeVal = [this](const QString& label) {
|
||||
QLabel* l = new QLabel(this);
|
||||
l->setStyleSheet(QString("color:%1;font-size:22px;").arg(C::TEXT_SUB));
|
||||
l->setProperty("label", label);
|
||||
return l;
|
||||
};
|
||||
// 底部不再显示底盘/液位数据(改由各页面卡片展示),只保留模式徽标 + 返回按钮
|
||||
//auto makeVal = [this](const QString& label) {
|
||||
// QLabel* l = new QLabel(this);
|
||||
// l->setStyleSheet(QString("color:%1;font-size:40px;").arg(C::TEXT_SUB));
|
||||
// l->setProperty("label", label);
|
||||
// return l;
|
||||
//};
|
||||
//m_battery = makeVal("底盘电量");
|
||||
//m_voltage = makeVal("底盘电压");
|
||||
//m_levelA = makeVal("清水液位");
|
||||
//m_levelFoam = makeVal("泡沫液位");
|
||||
//lay->addWidget(m_battery);
|
||||
//lay->addWidget(m_voltage);
|
||||
//lay->addWidget(m_levelA);
|
||||
//lay->addWidget(m_levelFoam);
|
||||
|
||||
m_battery = makeVal("底盘电量");
|
||||
m_voltage = makeVal("底盘电压");
|
||||
m_levelA = makeVal("清水液位");
|
||||
m_levelFoam = makeVal("泡沫液位");
|
||||
|
||||
lay->addWidget(m_battery);
|
||||
lay->addWidget(m_voltage);
|
||||
lay->addWidget(m_levelA);
|
||||
lay->addWidget(m_levelFoam);
|
||||
lay->addStretch(1);
|
||||
|
||||
// 模式徽标(点击可切换行车/机械臂模式,模拟面板机械旋钮)
|
||||
m_mode = new QPushButton("行车模式", this);
|
||||
m_mode->setFixedSize(180, 48);
|
||||
m_mode->setStyleSheet(QString("background-color:%1;color:#FFFFFF;border-radius:8px;font-size:24px;font-weight:700;border:none;")
|
||||
// 模式徽标(仅显示:行车/机械臂由遥控器拨钮经串口回传,界面不参与切换)
|
||||
m_mode = new QLabel("行车模式", this);
|
||||
m_mode->setFixedSize(260, 80);
|
||||
m_mode->setAlignment(Qt::AlignCenter);
|
||||
m_mode->setStyleSheet(QString("background-color:%1;color:#FFFFFF;border-radius:8px;font-size:40px;font-weight:700;")
|
||||
.arg(C::SUCCESS));
|
||||
m_mode->setCursor(Qt::PointingHandCursor);
|
||||
connect(m_mode, &QPushButton::clicked, this, [this]() {
|
||||
Mode next = (m_ctx->mode == Mode::Drive) ? Mode::Arm : Mode::Drive;
|
||||
m_ctx->setMode(next);
|
||||
});
|
||||
lay->addWidget(m_mode);
|
||||
|
||||
// 返回按钮
|
||||
m_back = new QPushButton("返回", this);
|
||||
m_back->setFixedSize(144, 76);
|
||||
m_back->setFixedSize(200, 80);
|
||||
m_back->setStyleSheet(cancelButtonStyle(40)); // 选中(悬停/按下/焦点)红底白字
|
||||
connect(m_back, &QPushButton::clicked, this, &StatusStrip::backClicked);
|
||||
lay->addWidget(m_back);
|
||||
|
||||
connect(m_ctx->comm(), &UdpCommunication::telemetryUpdated, this, &StatusStrip::refresh);
|
||||
connect(m_ctx->comm(), &CarCommunication::telemetryUpdated, this, &StatusStrip::refresh);
|
||||
connect(m_ctx, &AppContext::modeChanged, this, [this](Mode m) {
|
||||
m_mode->setText(m == Mode::Drive ? "行车模式" : "机械臂模式");
|
||||
m_mode->setStyleSheet(QString("background-color:%1;color:#FFFFFF;border-radius:8px;font-size:24px;font-weight:700;")
|
||||
m_mode->setStyleSheet(QString("background-color:%1;color:#FFFFFF;border-radius:8px;font-size:40px;font-weight:700;")
|
||||
.arg(m == Mode::Drive ? C::SUCCESS : C::WARNING));
|
||||
});
|
||||
refresh();
|
||||
@@ -73,11 +70,17 @@ void StatusStrip::setBackEnabled(bool enabled)
|
||||
m_back->setEnabled(enabled);
|
||||
}
|
||||
|
||||
void StatusStrip::setModeVisible(bool visible)
|
||||
{
|
||||
m_mode->setVisible(visible);
|
||||
}
|
||||
|
||||
void StatusStrip::refresh()
|
||||
{
|
||||
const Telemetry& t = m_ctx->telemetry;
|
||||
m_battery->setText(QString("底盘电量:%1%").arg(t.soc));
|
||||
m_voltage->setText(QString("底盘电压:%1V").arg(t.volt, 0, 'f', 0));
|
||||
m_levelA->setText(QString("清水液位:%1L").arg(t.levelA, 0, 'f', 0));
|
||||
m_levelFoam->setText(QString("泡沫液位:%1L").arg(t.levelFoam, 0, 'f', 0));
|
||||
// 底部已不显示遥测数据,保留空实现(仍连着 telemetryUpdated,方便以后加显示项)
|
||||
//const Telemetry& t = m_ctx->telemetry;
|
||||
//m_battery->setText(QString("底盘电量:%1%").arg(t.soc));
|
||||
//m_voltage->setText(QString("底盘电压:%1V").arg(t.volt, 0, 'f', 0));
|
||||
//m_levelA->setText(QString("清水液位:%1L").arg(t.levelA, 0, 'f', 0));
|
||||
//m_levelFoam->setText(QString("泡沫液位:%1L").arg(t.levelFoam, 0, 'f', 0));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user