#include "HealthUI.h" #include "ui_HealthUI.h" HealthUI::HealthUI(QWidget *parent) : QWidget(parent), ui(new Ui::HealthUI) { ui->setupUi(this); //load qss QFile file(":/qss/HealthUI.qss"); file.open(QFile::ReadOnly); QTextStream filetext(&file); QString stylesheet = filetext.readAll(); this->setStyleSheet(stylesheet); file.close(); quint16 index = 1; /* Install("320B",index++,state::inital); Install("SBG",index++,state::inital); Install("大气机",index++,state::inital); Install("起落架",index++,state::inital); Install("配电盒",index++,state::inital);//5 Install("记录仪",index++,state::inital);// Install("发动机",index++,state::inital); Install("舵控1",index++,state::inital); Install("舵控2",index++,state::inital);//3 Install("舵控3",index++,state::inital);//10 Install("开始记录",index++,state::inital);//12 Install("发动机射检",index++,state::inital);//11 Install("舵控1自检",index++,state::inital); Install("舵控2自检",index++,state::inital); Install("舵控3自检",index++,state::inital);//15 Install("使用320",index++,state::inital);//使用SBG Install("空速管加温",index++,state::inital);// Install("插销上锁",index++,state::inital);// Install("变体上锁",index++,state::inital);//20 Install("56V并网",index++,state::inital);// Install("燃油泵",index++,state::inital); Install("燃油切断阀",index++,state::inital); Install("温度变送器",index++,state::inital); Install("开伞",index++,state::inital); Install("切伞",index++,state::inital);//25 Install("蓄电池加温",index++,state::inital); Install("刹车/收放",index++,state::inital); Install("滑油变送器",index++,state::inital); Install("起落架放",index++,state::inital); Install("舱门打开",index++,state::inital);//30 3个通道都加温才变绿 Install("副翼/方向",index++,state::inital); Install("转向/变体锁",index++,state::inital); Install("电源状态",index++,state::inital);// Install("起落架承载",index++,state::inital);// Install("刹车开启",index++,state::inital); */ Install("内置惯导",1,state::inital); Install("SBG",2,state::inital); Install("起落架",3,state::inital); Install("大气机",4,state::inital); // Install("PWM模块",5,state::inital); Install("遥控器",5,state::inital); Install("数据上行",6,state::inital); Install("记录打开",7,state::inital); Install("选择SBG",8,state::inital); // Install("未定向",10,state::inital); Install("开伞",9,state::inital); Install("刹车",10,state::inital); Install("收起到位",11,state::inital); Install("放下到位",12,state::inital); // Install("方向卸载接通",15,state::inital); Install("轮转状态",13,state::inital); Install("左轮载",14,state::inital); Install("右轮载",15,state::inital); Install("前轮载",16,state::inital); // Install("载荷减缓接通",20,state::inital); Install("动压状态",17,state::inital); Install("静压状态",18,state::inital); Install("侧滑角",19,state::inital); Install("迎角",20,state::inital); Install("单发失效正常", 21, state::inital); Install("复飞指令", 22, state::inital); Install("是否在安控区", 23, state::inital); Install("定向", 24, state::inital); //通过json安装 } HealthUI::~HealthUI() { delete ui; } void HealthUI::setState(QWidget *w,state s) { w->setProperty("state",s); w->style()->unpolish(w); w->style()->polish(w); } void HealthUI::setString(QLabel *w,QString s) { w->setText(s); } void HealthUI::setColor(uint32_t pos,state sta) { if(LabelMap.keys().contains(pos)) { QLabel *label = LabelMap.value(pos); if(label) { setState(label,sta); } } else { //找不到就不设置 } } void HealthUI::setValue(uint32_t pos,QVariant sta) { if(LabelMap.contains(pos)) { QLabel *label = LabelMap.value(pos); if(label) { setString(label,sta.toString()); } } else { //找不到就不设置 } } void HealthUI::Install(QVariant name,int key,state s) { //查找没有被占用的位置 if(!LabelMap.contains(key))//如果没有就新建 { QLabel *l = new QLabel(name.toString()); l->setObjectName("label_" + key); l->setFixedHeight(20); l->setAlignment(Qt::AlignHCenter|Qt::AlignVCenter); LabelMap.insert(key,l); int row,column; row = (key - 1)/5; column = (key - 1)%5; ui->gridLayout->addWidget(l,row,column); setState(l,s); } else //如果已经有了,那么就修改名字、状态 { QLabel *label = LabelMap.value(key); setState(label,s); setString(label,name.toString()); } int row = 0; if(LabelMap.size() > 0) { foreach (int key, LabelMap.keys()) { int n = (key - 1)/5 + 1; if(n >= row) { row = n; } } //this->resize(400,26 * row + 36); this->resize(400,26 * row + 0); } else { this->resize(400,0); } } QLabel *HealthUI::findLabel(int key) { if(LabelMap.contains(key)) { return LabelMap.value(key); } return nullptr; } void HealthUI::AllLabel(void) { QObjectList objlist = ui->groupBox->children(); foreach (QObject *obj, objlist) { QLabel *label = qobject_cast(obj); if(label) { QStringList namelist = label->objectName().split(QLatin1Char('_')); QString num = namelist.at(namelist.size() - 1); bool ret; int number = num.toInt(&ret); if(ret == true) { LabelMap.insert(number,label); } else { LabelMap.insert(1,label); } } } } void HealthUI::setInital(void) { foreach (QLabel *l, LabelMap) { setState(l,state::inital); } } void HealthUI::setFailure(void) { foreach (QLabel *l, LabelMap) { setState(l,state::failure); } } void HealthUI::setSuccess(void) { foreach (QLabel *l, LabelMap) { setState(l,state::success); } } void HealthUI::setWarning(void) { foreach (QLabel *l, LabelMap) { setState(l,state::warning); } }