#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("EADC",index++,state::inital); Install("SBG",index++,state::inital); Install("ECU",index++,state::inital); Install("INE",index++,state::inital); Install("SSPC",index++,state::inital); Install("REC",index++,state::inital);//14 Install("ECU射检",index++,state::inital); Install("REC记录",index++,state::inital);//1,绿,2,黄 Install("Gear",index++,state::inital);//3 Install("Act",index++,state::inital);//3 Install("Act1",index++,state::inital);//12 Install("Act2",index++,state::inital);//11 Install("Act自检",index++,state::inital); Install("Act1自检",index++,state::inital); Install("Act2自检",index++,state::inital); Install("EADC加温",index++,state::inital);// Install("EADC故障",index++,state::inital);//EADC失效 Install("INE进入导航",index++,state::inital); Install("INE卫星导航",index++,state::inital);//INE差分导航 Install("INE定向",index++,state::inital); Install("燃油泵/流量计",index++,state::inital); Install("副翼/前起舵机",index++,state::inital); Install("56V加温1",index++,state::inital); Install("28V加温",index++,state::inital); Install("智能计算机",index++,state::inital); Install("发动机控制器",index++,state::inital); Install("空速管加温",index++,state::inital); Install("温度变送器",index++,state::inital); Install("燃油切断阀",index++,state::inital); Install("56V加温2",index++,state::inital); Install("垂直舵机",index++,state::inital); 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); Install("前起收起",index++,state::inital); Install("前起锁定",index++,state::inital); Install("左前舱门",index++,state::inital); Install("左主起承载",index++,state::inital); Install("左主起放下",index++,state::inital); Install("左主起收起",index++,state::inital); Install("左主起锁定",index++,state::inital); Install("左主起舱门",index++,state::inital); Install("右主起承载",index++,state::inital); Install("右主起放下",index++,state::inital); Install("右主起收起",index++,state::inital); Install("右主起锁定",index++,state::inital); Install("右主起舱门",index++,state::inital); Install("右前舱门",index++,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); } 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); } }