GrabBag/App/WheelMeasure/WheelMeasureApp/widgets/MeasureResultListWidget.h

107 lines
2.8 KiB
C
Raw Normal View History

2026-03-28 10:49:55 +08:00
#ifndef MEASURERESULTLISTWIDGET_H
#define MEASURERESULTLISTWIDGET_H
#include <QWidget>
#include <QVBoxLayout>
#include <QHBoxLayout>
#include <QScrollArea>
#include <QMap>
#include <QLabel>
#include <QFrame>
#include "IVrWheelMeasureConfig.h"
/**
* @brief 结果卡片显示模式
*/
enum class ResultCardMode {
Wheel = 0, // 显示拱高/到地面高度/上下点位
Correction = 1, // 只显示工装长度
};
2026-03-28 10:49:55 +08:00
/**
* @brief 单个设备结果卡片控件
*/
class DeviceResultCard : public QFrame
{
Q_OBJECT
public:
explicit DeviceResultCard(const QString& deviceName, QWidget* parent = nullptr);
~DeviceResultCard();
void updateResult(const WheelMeasureData& data, bool isValid);
void clearResult();
void setDisplayMode(ResultCardMode mode);
2026-03-28 10:49:55 +08:00
QString getDeviceName() const { return m_deviceName; }
private:
void setupUI();
void applyDisplayMode();
2026-03-28 10:49:55 +08:00
QString m_deviceName;
ResultCardMode m_mode = ResultCardMode::Wheel;
2026-03-28 10:49:55 +08:00
QLabel* m_nameLabel = nullptr;
QLabel* m_heightLabel = nullptr;
QLabel* m_groundHeightLabel = nullptr; // 到地面高度
QLabel* m_archPosLabel = nullptr; // 拱点位置
QLabel* m_upPosLabel = nullptr; // 上点位置
QLabel* m_downPosLabel = nullptr; // 下点位置
QLabel* m_lengthLabel = nullptr; // 工装长度(Correction 模式)
2026-03-28 10:49:55 +08:00
QLabel* m_timestampLabel = nullptr;
QLabel* m_statusLabel = nullptr;
};
/**
* @brief 检测结果列表控件
* 每个设备显示为一个卡片,显示最新的检测结果
*/
class MeasureResultListWidget : public QWidget
{
Q_OBJECT
public:
explicit MeasureResultListWidget(QWidget* parent = nullptr);
~MeasureResultListWidget();
/**
* @brief 设置设备列表
* @param deviceNames 设备名称列表
*/
void setDeviceList(const QStringList& deviceNames);
/**
* @brief 更新设备检测结果
* @param deviceName 设备名称
* @param data 检测数据
* @param isValid 结果是否有效
*/
void updateDeviceResult(const QString& deviceName, const WheelMeasureData& data, bool isValid);
/**
* @brief 清空所有结果
*/
void clearAllResults();
/**
* @brief 清空指定设备的结果
*/
void clearDeviceResult(const QString& deviceName);
/**
* @brief 设置所有卡片的显示模式(轮毂/工装)
*/
void setDisplayMode(ResultCardMode mode);
2026-03-28 10:49:55 +08:00
private:
void setupUI();
DeviceResultCard* findOrCreateCard(const QString& deviceName);
QScrollArea* m_scrollArea = nullptr;
QWidget* m_contentWidget = nullptr;
QVBoxLayout* m_contentLayout = nullptr;
QMap<QString, DeviceResultCard*> m_deviceCards;
ResultCardMode m_mode = ResultCardMode::Wheel;
2026-03-28 10:49:55 +08:00
};
#endif // MEASURERESULTLISTWIDGET_H