#pragma once #include <QWidget> #include <QLabel> #include <QPaintEvent> #include <QList> #include "SignalLabel.h" #include "ui_SignalIndicatorLampUI.h" class SignalIndicatorLampUI : public QWidget { Q_OBJECT public: enum LayoutType // 信号灯布局类型 { HLyt, // 水平 VLyt, // 垂直 GLyt, // 网格 }; SignalIndicatorLampUI( QWidget *parent = Q_NULLPTR); ~SignalIndicatorLampUI(); void AttachDock(class DockWidget* dockWidget); void InitIndicatorLamp(QStringList &lamps, LayoutType type, int nColCount = 4); void SetLampState(std::vector<int> vecStatus); void UpdateIndicatorLamp(QStringList& lamps, LayoutType type, int nColCount = 4); void InitLamp(const QString& strFile); protected slots: void slotUpdateTime(double dTime); void onStatusChanged(int status); protected: void paintEvent(QPaintEvent* event); void ParseLamp(const QString& strFile); private: Ui::SignalIndicatorLampUI ui; QList<SignalLabel*> m_listLampPtr; QList<int> m_lampStatus; int m_iLampCount = 0; };