#include "StatusUI.h" #include "ui_StatusUI.h" StatusUI::StatusUI(QWidget *parent) : QWidget(parent), ui(new Ui::StatusUI) { ui->setupUi(this); //load qss QFile file(":/qss/StatusUI.qss"); file.open(QFile::ReadOnly); QTextStream filetext(&file); QString stylesheet = filetext.readAll(); this->setStyleSheet(stylesheet); file.close(); int id_count = 0; StateGroup *base = new StateGroup(id_count++,this); StateGroup *actuator = new StateGroup(id_count++,this); StateGroup *state = new StateGroup(id_count++,this); //install(mode,0,"飞行模式",0,QMap{{"待机",StateWidget::state::gray},{"手动",StateWidget::state::orange},{"自主",StateWidget::state::green}}); install(base,0,"攻角[°]",0,QMap{{-20,StateWidget::state::red},{20,StateWidget::state::green}}); install(base,0,"侧滑角[°]",0,QMap{{-20,StateWidget::state::red},{20,StateWidget::state::green}}); install(base,0,"滚转角[°]",0,QMap{{-45,StateWidget::state::red},{45,StateWidget::state::green}}); install(base,0,"俯仰角[°]",0,QMap{{-20,StateWidget::state::red},{20,StateWidget::state::green}}); install(base,0,"航迹角[°]",0,QMap{{-1.0,StateWidget::state::red},{361,StateWidget::state::green}}); install(base,0,"海拔[m]",0,QMap{{1500,StateWidget::state::red},{999000,StateWidget::state::green}}); install(base,0,"表速[m/s]",0,QMap{{100,StateWidget::state::red},{700,StateWidget::state::green}}); install(base,0,"真空速[m/s]",0,QMap{{100,StateWidget::state::red},{700,StateWidget::state::green}}); install(base,0,"地速[m/s]",0,QMap{{100,StateWidget::state::red},{700,StateWidget::state::green}}); install(base,0,"马赫数[Ma]",0,QMap{{0.3,StateWidget::state::red},{0.8,StateWidget::state::green},{2,StateWidget::state::orange}}); //install(base,0,"爬升率[m/s]",0,QMap{{-80,StateWidget::state::red},{100,StateWidget::state::green},{500,StateWidget::state::orange}}); install(base,0,"导航模式",0, QMap{{"未初始化",StateWidget::state::gray}, {"INS/大气",StateWidget::state::orange}, {"INS/DGPS",StateWidget::state::green}, {"INS/GNSS",StateWidget::state::green}, {"GNSS",StateWidget::state::orange}, {"未知参数",StateWidget::state::red}}); install(base,0,"双天线定向",0); install(actuator,0,"左副翼[°]",0,QMap{{2,StateWidget::state::red}}); install(actuator,0,"右副翼[°]",0,QMap{{2,StateWidget::state::red}}); install(actuator,0,"左升降[°]",0,QMap{{2,StateWidget::state::red}}); install(actuator,0,"右升降[°]",0,QMap{{2,StateWidget::state::red}}); install(actuator,0,"左方向[°]",0,QMap{{2,StateWidget::state::red}}); install(actuator,0,"右方向[°]",0,QMap{{2,StateWidget::state::red}}); install(actuator,0,"左扰流[°]",0,QMap{{2,StateWidget::state::red}}); install(actuator,0,"右扰流[°]",0,QMap{{2,StateWidget::state::red}}); install(actuator,0,"左变体[°]",0,QMap{{2,StateWidget::state::red}}); install(actuator,0,"右变体[°]",0,QMap{{2,StateWidget::state::red}}); install(actuator,0,"转向[°]",0,QMap{{2,StateWidget::state::red}}); //左副翼,右副翼,左升降,右升降,左方向,右方向,左扰流,右扰流,左变体,右变体 //install(e_fly,0,"位置状态",0,QMap{{"无效",StateWidget::state::red},{"有效",StateWidget::state::green}}); //install(e_fly,0,"高度状态",0); //install(e_fly,0,"加速度状态",0); //install(e_fly,0,"姿态状态",0,QMap{{"无效",StateWidget::state::red},{"有效",StateWidget::state::green}}); //install(e_fly,0,"角速度状态",0); //install(e_fly,0,"时间状态",0); //install(e_fly,0,"航迹角",0); //install(e_fly,0,"天向加速度",0); //install(e_fly,0,"偏航加速度",0); /*install(e_fly,0,"工作状态",0, QMap{{"准备",StateWidget::state::gray}, {"对准中",StateWidget::state::orange}, {"导航",StateWidget::state::green}, {"对准失败",StateWidget::state::red}, {"未知参数",StateWidget::state::red}}); */ //install(e_fly,0,"主惯导",0); //install(e_fly,0,"IMU状态",0); //install(e_fly,0,"DGPS状态",0); install(state,0,"油门[%]",0, QMap{{0,StateWidget::state::red}, {5,StateWidget::state::orange}, {200,StateWidget::state::green}}); install(state,2,"转速[r/min]",0, QMap{{18000,StateWidget::state::red}, {20000,StateWidget::state::orange}, {50000,StateWidget::state::green}}); install(state,2,"进气总温[℃]",0, QMap{{-60,StateWidget::state::orange}, {90,StateWidget::state::green}}); install(state,2,"P2[MPa]",0, QMap{{0,StateWidget::state::red}, {0.1,StateWidget::state::orange}, {6,StateWidget::state::green}}); install(state,2,"伺服电流[mA]",0, QMap{{0,StateWidget::state::red}, {10,StateWidget::state::orange}, {150,StateWidget::state::green}}); //install(state,2,"发动机状态",0); //install(state,2,"发动机作动",0); install(state,0,"涡轮后温度[℃]",0, QMap{{100,StateWidget::state::gray}, {400,StateWidget::state::orange}, {800,StateWidget::state::green}, {850,StateWidget::state::orange}, {10000,StateWidget::state::red}}); install(state,0,"滑油压力[kPa]",0, QMap{{100,StateWidget::state::red}, {100,StateWidget::state::orange}, {10000,StateWidget::state::green}}); install(state,0,"燃油流量[kg/m]",0, QMap{{0.2,StateWidget::state::red}, {0.4,StateWidget::state::orange}, {100,StateWidget::state::green}}); install(state,0,"剩余油量[kg]",0, QMap{{20,StateWidget::state::red}, {40,StateWidget::state::orange}, {800,StateWidget::state::green}}); /* install(state,2,"投放状态",0, QMap{{"锁定|锁定",StateWidget::state::green}, {"锁定|投放",StateWidget::state::orange}, {"投放|锁定",StateWidget::state::orange}, {"投放|投放",StateWidget::state::red}}); //install(state,0,"脱离状态2",0); install(state,2,"火箭状态",0, QMap{{"保险|工作",StateWidget::state::orange}, {"保险|上锁",StateWidget::state::green}, {"解除|工作",StateWidget::state::red}, {"解除|上锁",StateWidget::state::orange}}); install(state,0,"加速度采集",0); install(state,0,"点火状态",0, QMap{{"未点火",StateWidget::state::gray}, {"点火成功",StateWidget::state::green}}); */ /* install(battery,0,"飞控电压[V]",0, QMap{{23,StateWidget::state::red}, {24,StateWidget::state::orange}, {50,StateWidget::state::green}}); install(battery,0,"舵机电压[V]",0, QMap{{46,StateWidget::state::red}, {48,StateWidget::state::orange}, {80,StateWidget::state::green}}); install(communication,0,"信号[%]",0, QMap{{50,StateWidget::state::red}, {80,StateWidget::state::orange}, {100,StateWidget::state::green}}); install(communication,0,"接收[B/s]",0, QMap{{500,StateWidget::state::red}, {800,StateWidget::state::orange}, {3000,StateWidget::state::green}}); install(communication,0,"发送[B/s]",0, QMap{{5,StateWidget::state::red}, {100,StateWidget::state::orange}, {3000,StateWidget::state::green}}); */ //GroupList.insert(mode->ID(),mode); GroupList.insert(base->ID(),base); GroupList.insert(actuator->ID(),actuator); //GroupList.insert(e_fly->ID(),e_fly); GroupList.insert(state->ID(),state); //GroupList.insert(battery->ID(),battery); //GroupList.insert(communication->ID(),communication); if(GroupList.size() > 0) { for( QMap::iterator i = GroupList.begin();i != GroupList.end();i++) { StateGroup *g = i.value(); ui->gridLayout->addWidget(g,g->ID(),0,1,1); } QVBoxLayout * vb = new QVBoxLayout; vb->addStretch(); ui->gridLayout->addLayout(vb,GroupList.size(),0,1,1); } else { this->setFixedWidth(0); } basewidth = this->width(); } StatusUI::~StatusUI() { delete ui; } void StatusUI::resizeEvent(QResizeEvent *event) { //qDebug() << event; //计算一个使用多少长度 /* if(GroupList.size() > 0) { int row = 0; int column = 0; int current_height = 0; this->resize(basewidth,this->height()); for( QMap::iterator i = GroupList.begin();i != GroupList.end();i++) { StateGroup *g = i.value(); // qDebug() << g->size() << g->lenght(); if((current_height + g->lenght()) < this->height()) { ui->gridLayout->addWidget(g,row,column,1,1); row++; current_height += g->lenght(); } else { current_height = 0; column ++; row = 0; this->resize(this->width() * (column+1),this->height()); } } } */ } void StatusUI::setColor(int group,int index,StateWidget::state s) { if(GroupList.contains(group)) { StateGroup *g = GroupList.value(group); if(g) { g->setColor(index,s); } } } void StatusUI::setValue(int group, int index, QString s) { if(GroupList.contains(group)) { StateGroup *g = GroupList.value(group); if(g) { g->setValue(index,s); } } } bool StatusUI::addGroup(int index) { bool flag = false; StateGroup *group = GroupList.value(index); if(GroupList.contains(index)) { group = GroupList.value(index); } else { group = new StateGroup(GroupList.size(),this); GroupList.insert(index,group); flag = true; } return flag; } StateWidget * StatusUI::install(StateGroup *group,int flag, QString name, QVariant value,QMap stats) { StateWidget *w = new StateWidget(flag,name,value,StateWidget::state::gray,group->count()); w->setStats(stats); group->addItem(w); return w; } StateWidget *StatusUI::install(StateGroup *group,int flag, QString name, QVariant value) { StateWidget *w = new StateWidget(flag,name,value,StateWidget::state::gray,group->count()); group->addItem(w); return w; } StateWidget * StatusUI::install(int index,int flag, QString name, QVariant value) { StateGroup *group = GroupList.value(index); if(GroupList.contains(index)) { group = GroupList.value(index); } else { group = new StateGroup(GroupList.size(),this); GroupList.insert(GroupList.size(),group); } StateWidget *w = new StateWidget(flag,name,value,StateWidget::state::gray,group->count()); group->addItem(w); return w; } void StatusUI::setInital(void) { foreach (StateGroup *group, GroupList) { QMap list = group->Items(); foreach (StateWidget *w, list) { if(w) { w->setColor(StateWidget::gray); } } } } void StatusUI::setFailure(void) { foreach (StateGroup *group, GroupList) { QMap list = group->Items(); foreach (StateWidget *w, list) { if(w) { w->setColor(StateWidget::red); } } } } void StatusUI::setSuccess(void) { foreach (StateGroup *group, GroupList) { QMap list = group->Items(); foreach (StateWidget *w, list) { if(w) { w->setColor(StateWidget::green); } } } } void StatusUI::setWarning(void) { foreach (StateGroup *group, GroupList) { QMap list = group->Items(); foreach (StateWidget *w, list) { if(w) { w->setColor(StateWidget::orange); } } } }