#include "Senser.h" #include "ui_Senser.h" Senser::Senser(QWidget *parent) : QWidget(parent), ui(new Ui::Senser) { ui->setupUi(this); m_parent = parent; QFile file(":/qss/Senser.qss"); file.open(QFile::ReadOnly); QTextStream filetext(&file); QString stylesheet = filetext.readAll(); this->setStyleSheet(stylesheet); file.close(); this->setWindowTitle(tr("sensor")); ui->frame_Attitude->resize(384,234); ui->frame_Gyro->resize(384,234); ui->frame_Accelerate->resize(384,234); ui->frame_Servo->resize(384,234); ui->frame_Altitude->resize(384,234); ui->frame_Speed->resize(384,234); attChart = new Chart(ui->frame_Attitude); //attChart = new Chart(); gyroChart = new Chart(ui->frame_Gyro); accChart = new Chart(ui->frame_Accelerate); servoChart = new Chart(ui->frame_Servo); altChart = new Chart(ui->frame_Altitude); speedChart = new Chart(ui->frame_Speed); //ui->frame_Attitude->addWidget(attChart,0,0,1,1); attChart->setGeometry(0,0,ui->frame_Attitude->width(),ui->frame_Attitude->height()); gyroChart->setGeometry(0,0,ui->frame_Gyro->width(),ui->frame_Gyro->height()); accChart->setGeometry(0,0,ui->frame_Accelerate->width(),ui->frame_Accelerate->height()); servoChart->setGeometry(0,0,ui->frame_Servo->width(),ui->frame_Servo->height()); altChart->setGeometry(0,0,ui->frame_Altitude->width(),ui->frame_Altitude->height()); speedChart->setGeometry(0,0,ui->frame_Speed->width(),ui->frame_Speed->height()); attChart->chart()->legend()->setAlignment(Qt::AlignRight); gyroChart->chart()->legend()->setAlignment(Qt::AlignRight); accChart->chart()->legend()->setAlignment(Qt::AlignRight); servoChart->chart()->legend()->setAlignment(Qt::AlignRight); altChart->chart()->legend()->setAlignment(Qt::AlignRight); speedChart->chart()->legend()->setAlignment(Qt::AlignRight); attChart->setOperation(false); gyroChart->setOperation(false); accChart->setOperation(false); servoChart->setOperation(false); altChart->setOperation(false); speedChart->setOperation(false); attChart->setRenderHint(QPainter::Antialiasing); gyroChart->setRenderHint(QPainter::Antialiasing); accChart->setRenderHint(QPainter::Antialiasing); servoChart->setRenderHint(QPainter::Antialiasing); altChart->setRenderHint(QPainter::Antialiasing); speedChart->setRenderHint(QPainter::Antialiasing); attChart->setRubberBand(QChartView::RectangleRubberBand); gyroChart->setRubberBand(QChartView::RectangleRubberBand); accChart->setRubberBand(QChartView::RectangleRubberBand); servoChart->setRubberBand(QChartView::RectangleRubberBand); altChart->setRubberBand(QChartView::RectangleRubberBand); speedChart->setRubberBand(QChartView::RectangleRubberBand); connect(attChart,&Chart::select, this,&Senser::chartSelect); connect(gyroChart,&Chart::select, this,&Senser::chartSelect); connect(accChart,&Chart::select, this,&Senser::chartSelect); connect(servoChart,&Chart::select, this,&Senser::chartSelect); connect(altChart,&Chart::select, this,&Senser::chartSelect); connect(speedChart,&Chart::select, this,&Senser::chartSelect); //StringModel = new QStringListModel(ui->listView_Data); ItemModel = new QStandardItemModel(ui->listView_Data); ui->listView_Data->setModel(ItemModel); ui->listView_Data->scrollToBottom(); QStandardItem *item = new QStandardItem("item1"); ItemModel->appendRow(item); item = new QStandardItem("item2"); ItemModel->appendRow(item); ui->listView_Data->setModel(ItemModel); ui->listView_Data->hide(); ui->label_2_dynamic->hide(); ui->label_2_static->hide(); } Senser::~Senser() { delete ui; } void Senser::chartSelect(bool flag) { if(flag) { QObject *obj = sender(); if(obj) { Chart *chart = qobject_cast(obj); if(chart) { if(chart == attChart) { setColor(ui->frame_Attitude,QColor("#00FF00")); setColor(ui->frame_Gyro,QColor("#FFFFFF")); setColor(ui->frame_Accelerate,QColor("#FFFFFF")); setColor(ui->frame_Servo,QColor("#FFFFFF")); setColor(ui->frame_Altitude,QColor("#FFFFFF")); setColor(ui->frame_Speed,QColor("#FFFFFF")); attChart->setSelect(true); gyroChart->setSelect(false); accChart->setSelect(false); servoChart->setSelect(false); altChart->setSelect(false); speedChart->setSelect(false); } else if(chart == gyroChart) { setColor(ui->frame_Attitude,QColor("#FFFFFF")); setColor(ui->frame_Gyro,QColor("#00FF00")); setColor(ui->frame_Accelerate,QColor("#FFFFFF")); setColor(ui->frame_Servo,QColor("#FFFFFF")); setColor(ui->frame_Altitude,QColor("#FFFFFF")); setColor(ui->frame_Speed,QColor("#FFFFFF")); attChart->setSelect(false); gyroChart->setSelect(true); accChart->setSelect(false); servoChart->setSelect(false); altChart->setSelect(false); speedChart->setSelect(false); } else if(chart == accChart) { setColor(ui->frame_Attitude,QColor("#FFFFFF")); setColor(ui->frame_Gyro,QColor("#FFFFFF")); setColor(ui->frame_Accelerate,QColor("#00FF00")); setColor(ui->frame_Servo,QColor("#FFFFFF")); setColor(ui->frame_Altitude,QColor("#FFFFFF")); setColor(ui->frame_Speed,QColor("#FFFFFF")); attChart->setSelect(false); gyroChart->setSelect(false); accChart->setSelect(true); servoChart->setSelect(false); altChart->setSelect(false); speedChart->setSelect(false); } else if(chart == servoChart) { setColor(ui->frame_Attitude,QColor("#FFFFFF")); setColor(ui->frame_Gyro,QColor("#FFFFFF")); setColor(ui->frame_Accelerate,QColor("#FFFFFF")); setColor(ui->frame_Servo,QColor("#00FF00")); setColor(ui->frame_Altitude,QColor("#FFFFFF")); setColor(ui->frame_Speed,QColor("#FFFFFF")); attChart->setSelect(false); gyroChart->setSelect(false); accChart->setSelect(false); servoChart->setSelect(true); altChart->setSelect(false); speedChart->setSelect(false); } else if(chart == altChart) { setColor(ui->frame_Attitude,QColor("#FFFFFF")); setColor(ui->frame_Gyro,QColor("#FFFFFF")); setColor(ui->frame_Accelerate,QColor("#FFFFFF")); setColor(ui->frame_Servo,QColor("#FFFFFF")); setColor(ui->frame_Altitude,QColor("#00FF00")); setColor(ui->frame_Speed,QColor("#FFFFFF")); attChart->setSelect(false); gyroChart->setSelect(false); accChart->setSelect(false); servoChart->setSelect(false); altChart->setSelect(true); speedChart->setSelect(false); } else if(chart == speedChart) { setColor(ui->frame_Attitude,QColor("#FFFFFF")); setColor(ui->frame_Gyro,QColor("#FFFFFF")); setColor(ui->frame_Accelerate,QColor("#FFFFFF")); setColor(ui->frame_Servo,QColor("#FFFFFF")); setColor(ui->frame_Altitude,QColor("#FFFFFF")); setColor(ui->frame_Speed,QColor("#00FF00")); attChart->setSelect(false); gyroChart->setSelect(false); accChart->setSelect(false); servoChart->setSelect(false); altChart->setSelect(false); speedChart->setSelect(true); } } } } else { setColor(ui->frame_Attitude,QColor("#FFFFFF")); setColor(ui->frame_Gyro,QColor("#FFFFFF")); setColor(ui->frame_Accelerate,QColor("#FFFFFF")); setColor(ui->frame_Servo,QColor("#FFFFFF")); setColor(ui->frame_Altitude,QColor("#FFFFFF")); setColor(ui->frame_Speed,QColor("#FFFFFF")); attChart->setSelect(false); gyroChart->setSelect(false); accChart->setSelect(false); servoChart->setSelect(false); altChart->setSelect(false); speedChart->setSelect(false); } } void Senser::setColor(QWidget *w,QColor s) { QString stype = "background-color: "; stype.append(s.name()); stype.append(";"); if(w) { w->setStyleSheet(stype); w->style()->unpolish(w); w->style()->polish(w); } } void Senser::setColor(QWidget *w,state s) { w->setProperty("state",s); w->style()->unpolish(w); w->style()->polish(w); } void Senser::setValue(QLabel *w,QString s) { w->setText(s); } void Senser::updateUI() { attChart->setGeometry(0,0,ui->frame_Attitude->width(),ui->frame_Attitude->height()); gyroChart->setGeometry(0,0,ui->frame_Gyro->width(),ui->frame_Gyro->height()); accChart->setGeometry(0,0,ui->frame_Accelerate->width(),ui->frame_Accelerate->height()); servoChart->setGeometry(0,0,ui->frame_Servo->width(),ui->frame_Servo->height()); altChart->setGeometry(0,0,ui->frame_Altitude->width(),ui->frame_Altitude->height()); speedChart->setGeometry(0,0,ui->frame_Speed->width(),ui->frame_Speed->height()); } void Senser::resizeEvent(QResizeEvent *event) { //attChart->resizeEvent(event); attChart->setGeometry(0,0,ui->frame_Attitude->width(),ui->frame_Attitude->height()); gyroChart->setGeometry(0,0,ui->frame_Gyro->width(),ui->frame_Gyro->height()); accChart->setGeometry(0,0,ui->frame_Accelerate->width(),ui->frame_Accelerate->height()); servoChart->setGeometry(0,0,ui->frame_Servo->width(),ui->frame_Servo->height()); altChart->setGeometry(0,0,ui->frame_Altitude->width(),ui->frame_Altitude->height()); speedChart->setGeometry(0,0,ui->frame_Speed->width(),ui->frame_Speed->height()); } void Senser::closeEvent(QCloseEvent *event) { setFloat(); event->ignore(); } void Senser::setFloat(void) { if(this->parent()) { this->setParent(nullptr); QScreen *screen=QGuiApplication::primaryScreen (); this->move((screen->availableGeometry().width()-this->width())/2,(screen->availableGeometry().height()-this->height())/2); this->show(); this->resize(m_parent->size()); updateUI(); } else { this->setParent(m_parent); this->move(0,0); this->show(); this->resize(m_parent->size()); updateUI(); } } void Senser::on_checkBox_att_stateChanged(int arg1) { QCheckBox *chk = qobject_cast(sender()); if(chk) { if(arg1 == Qt::Checked) { attChart->addSeries(chk->text()); } else if(arg1 == Qt::Unchecked) { attChart->removeSerie(chk->text()); } update(); } } void Senser::on_checkBox_gyro_stateChanged(int arg1) { QCheckBox *chk = qobject_cast(sender()); if(chk) { if(arg1 == Qt::Checked) { gyroChart->addSeries(chk->text()); } else if(arg1 == Qt::Unchecked) { gyroChart->removeSerie(chk->text()); } update(); } } void Senser::on_checkBox_acc_stateChanged(int arg1) { QCheckBox *chk = qobject_cast(sender()); if(chk) { if(arg1 == Qt::Checked) { accChart->addSeries(chk->text()); } else if(arg1 == Qt::Unchecked) { accChart->removeSerie(chk->text()); } update(); } } void Senser::setINS(int source,int pos,QVariant value) { if(source == 1) { switch (pos) { case 1: ui->label_1_svn->setText(value.toString()); break; case 2: ui->label_1_BIT->setText(value.toString()); break; case 3: ui->label_1_AttitudeStatus->setText(value.toString()); break; case 4: ui->label_1_HeadingStatus->setText(value.toString()); break; case 5: ui->label_1_SpeedStatus->setText(value.toString()); break; case 6: ui->label_1_PositionStatus->setText(value.toString()); break; case 7: ui->label_1_System->setText(value.toString()); break; case 8: ui->label_1_COM->setText(value.toString()); break; case 9: ui->label_1_GPS->setText(value.toString()); break; case 10: ui->label_1_lng->setText(value.toString()); break; case 11: ui->label_1_lat->setText(value.toString()); break; case 12: ui->label_1_alt->setText(value.toString()); break; case 13: ui->label_1_gs->setText(value.toString()); break; case 14: ui->label_1_rol->setText(value.toString()); break; case 15: ui->label_1_pit->setText(value.toString()); break; case 16: ui->label_1_yaw->setText(value.toString()); break; case 17: ui->label_1_heading->setText(value.toString()); break; case 18: ui->label_1_p->setText(value.toString()); break; case 19: ui->label_1_q->setText(value.toString()); break; case 20: ui->label_1_r->setText(value.toString()); break; case 21: ui->label_1_ax->setText(value.toString()); break; case 22: ui->label_1_ay->setText(value.toString()); break; case 23: ui->label_1_az->setText(value.toString()); break; default: break; } } else if(source == 2) { switch (pos) { case 1: ui->label_2_svn->setText(value.toString()); break; case 2: ui->label_2_BIT->setText(value.toString()); break; case 3: ui->label_2_AttitudeStatus->setText(value.toString()); break; case 4: ui->label_2_HeadingStatus->setText(value.toString()); break; case 5: ui->label_2_SpeedStatus->setText(value.toString()); break; case 6: ui->label_2_PositionStatus->setText(value.toString()); break; case 7: ui->label_2_System->setText(value.toString()); break; case 8: ui->label_2_COM->setText(value.toString()); break; case 9: ui->label_2_GPS->setText(value.toString()); break; case 10: ui->label_2_lng->setText(value.toString()); break; case 11: ui->label_2_lat->setText(value.toString()); break; case 12: ui->label_2_alt->setText(value.toString()); break; case 13: ui->label_2_gs->setText(value.toString()); break; case 14: ui->label_2_rol->setText(value.toString()); break; case 15: ui->label_2_pit->setText(value.toString()); break; case 16: ui->label_2_yaw->setText(value.toString()); break; case 17: ui->label_2_heading->setText(value.toString()); break; case 18: ui->label_2_p->setText(value.toString()); break; case 19: ui->label_2_q->setText(value.toString()); break; case 20: ui->label_2_r->setText(value.toString()); break; case 21: ui->label_2_ax->setText(value.toString()); break; case 22: ui->label_2_ay->setText(value.toString()); break; case 23: ui->label_2_az->setText(value.toString()); break; default: break; } } } void Senser::setDAS(int source,int pos,QVariant value) { if(source == 1) { switch (pos) { case 1: //ui->label_1_atteck->setText(value.toString()); break; case 2: //ui->label_1_slide->setText(value.toString()); break; case 3: ui->label_1_rel_alt->setText(value.toString()); break; case 4: ui->label_1_cas->setText(value.toString()); break; case 5: ui->label_1_tas->setText(value.toString()); break; case 6: ui->label_1_ma->setText(value.toString()); break; case 7: ui->label_1_dynamic->setText(value.toString()); break; case 8: ui->label_1_static->setText(value.toString()); break; default: break; } } else if(source == 2) { switch (pos) { case 1: //ui->label_2_atteck->setText(value.toString()); break; case 2: //ui->label_2_slide->setText(value.toString()); break; case 3: //ui->label_2_pre_alt->setText(value.toString()); break; case 4: //ui->label_2_cas->setText(value.toString()); break; case 5: //ui->label_2_tas->setText(value.toString()); break; case 6: //ui->label_2_ma->setText(value.toString()); break; case 7: ui->label_2_dynamic->setText(value.toString()); break; case 8: ui->label_2_static->setText(value.toString()); break; default: break; } } } void Senser::setINSState(int source,int pos,state value) { if(source == 1) { switch (pos) { case 1: setColor(ui->label_1_svn,value); break; case 2: setColor(ui->label_1_BIT,value); break; case 3: setColor(ui->label_1_AttitudeStatus,value); break; case 4: setColor(ui->label_1_HeadingStatus,value); break; case 5: setColor(ui->label_1_SpeedStatus,value); break; case 6: setColor(ui->label_1_PositionStatus,value); break; case 7: setColor(ui->label_1_System,value); break; case 8: setColor(ui->label_1_COM,value); break; case 9: setColor(ui->label_1_GPS,value); break; case 10: setColor(ui->label_1_lng,value); break; case 11: setColor(ui->label_1_lat,value); break; case 12: setColor(ui->label_1_alt,value); break; case 13: setColor(ui->label_1_gs,value); break; case 14: setColor(ui->label_1_rol,value); break; case 15: setColor(ui->label_1_pit,value); break; case 16: setColor(ui->label_1_yaw,value); break; case 17: setColor(ui->label_1_heading,value); break; case 18: setColor(ui->label_1_p,value); break; case 19: setColor(ui->label_1_q,value); break; case 20: setColor(ui->label_1_r,value); break; case 21: setColor(ui->label_1_ax,value); break; case 22: setColor(ui->label_1_ay,value); break; case 23: setColor(ui->label_1_az,value); break; default: break; } } else if(source == 2) { switch (pos) { case 1: setColor(ui->label_2_svn,value); break; case 2: setColor(ui->label_2_BIT,value); break; case 3: setColor(ui->label_2_AttitudeStatus,value); break; case 4: setColor(ui->label_2_HeadingStatus,value); break; case 5: setColor(ui->label_2_SpeedStatus,value); break; case 6: setColor(ui->label_2_PositionStatus,value); break; case 7: setColor(ui->label_2_System,value); break; case 8: setColor(ui->label_2_COM,value); break; case 9: setColor(ui->label_2_GPS,value); break; case 10: setColor(ui->label_2_lng,value); break; case 11: setColor(ui->label_2_lat,value); break; case 12: setColor(ui->label_2_alt,value); break; case 13: setColor(ui->label_2_gs,value); break; case 14: setColor(ui->label_2_rol,value); break; case 15: setColor(ui->label_2_pit,value); break; case 16: setColor(ui->label_2_yaw,value); break; case 17: setColor(ui->label_2_heading,value); break; case 18: setColor(ui->label_2_p,value); break; case 19: setColor(ui->label_2_q,value); break; case 20: setColor(ui->label_2_r,value); break; case 21: setColor(ui->label_2_ax,value); break; case 22: setColor(ui->label_2_ay,value); break; case 23: setColor(ui->label_2_az,value); break; default: break; } } } //设置曲线 /* * attChart->setOperation(false); 角度 gyroChart->setOperation(false); 角速度 accChart->setOperation(false); 加速度 servoChart->setOperation(false); 舵机指令和反馈 altChart->setOperation(false); 海拔 speedChart->setOperation(false); 速度 ScopeRPM->setSerieData(tr("物理"),t->RPM_mea); ScopeRPM->setSerieData(tr("期望"),t->RPM_des); * * * */ void Senser::setAttChart(QString name,QVariant data,int index) { if(attChart) attChart->setSerieData(name,data,index); } void Senser::setGyroChart(QString name,QVariant data, int index) { if(gyroChart) gyroChart->setSerieData(name,data,index); } void Senser::setAccChart(QString name,QVariant data, int index) { if(accChart) accChart->setSerieData(name,data,index); } void Senser::setServoChart(QString name,QVariant data, int index) { if(servoChart) servoChart->setSerieData(name,data,index); } void Senser::setAltChart(QString name,QVariant data, int index) { if(altChart) altChart->setSerieData(name,data,index); } void Senser::setSpeedChart(QString name,QVariant data, int index) { if(speedChart) speedChart->setSerieData(name,data,index); }