251 lines
6.0 KiB
C++
251 lines
6.0 KiB
C++
#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 *mode = new StateGroup(id_count++,this);
|
|
StateGroup *base = new StateGroup(id_count++,this);
|
|
StateGroup *actuator = new StateGroup(id_count++,this);
|
|
StateGroup *e_fly = new StateGroup(id_count++,this);
|
|
StateGroup *state = new StateGroup(id_count++,this);
|
|
StateGroup *battery = new StateGroup(id_count++,this);
|
|
StateGroup *communication = new StateGroup(id_count++,this);
|
|
|
|
|
|
install(mode,0,"飞行模式",0);
|
|
|
|
install(base,0,"攻角[°]",0);
|
|
install(base,0,"侧滑角[°]",0);
|
|
install(base,0,"滚转角[°]",0);
|
|
install(base,0,"俯仰角[°]",0);
|
|
install(base,0,"航迹角[°]",0);
|
|
install(base,0,"海拔[m]",0);
|
|
install(base,0,"表速[m/s]",0);
|
|
install(base,0,"真空速[m/s]",0);
|
|
install(base,0,"地速[m/s]",0);
|
|
install(base,0,"马赫数[Ma]",0);
|
|
install(base,0,"爬升率[m/s]",0);
|
|
|
|
install(actuator,0,"左缝翼[°]",0);
|
|
install(actuator,0,"右缝翼[°]",0);
|
|
install(actuator,0,"左翼尖[°]",0);
|
|
install(actuator,0,"右翼尖[°]",0);
|
|
install(actuator,0,"左副翼[°]",0);
|
|
install(actuator,0,"右副翼[°]",0);
|
|
install(actuator,0,"左襟翼[°]",0);
|
|
install(actuator,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);
|
|
//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);
|
|
|
|
//install(e_fly,0,"主惯导",0);
|
|
//install(e_fly,0,"IMU状态",0);
|
|
//install(e_fly,0,"DGPS状态",0);
|
|
|
|
install(state,0,"投放状态",0);
|
|
//install(state,0,"脱离状态2",0);
|
|
install(state,0,"点火保险",0);
|
|
install(state,0,"加速度采集",0);
|
|
//install(state,0,"开伞状态",0);
|
|
|
|
install(battery,0,"飞控电压[V]",0);
|
|
install(battery,0,"舵机电压[V]",0);
|
|
|
|
install(communication,0,"信号[%]",0);
|
|
install(communication,0,"接收[B/s]",0);
|
|
install(communication,0,"发送[B/s]",0);
|
|
|
|
|
|
|
|
|
|
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<int,StateGroup *>::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<int,StateGroup *>::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;
|
|
}
|
|
|
|
|
|
|
|
void 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);
|
|
}
|
|
|
|
|
|
void 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);
|
|
}
|
|
|
|
|