状态颜色完善

This commit is contained in:
hm
2021-06-04 19:26:47 +08:00
parent 98b0de243d
commit 6c62d7f9a1
6 changed files with 179 additions and 62 deletions
+135 -4
View File
@@ -2,12 +2,21 @@
StateWidget::StateWidget(int flag,int index,QWidget *parent) : QWidget(parent)
{
this->setMouseTracking(true);
gridlayout = new QGridLayout(this);
gridlayout->setMargin(0);
gridlayout->setVerticalSpacing(6);
title = new QLabel("new status");
QFont font;
font.setFamily("Arial");
font.setBold(false);
font.setPixelSize(20);
title->setFont(font);
title->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
title->setFixedSize(w/2,h+m_offset);
@@ -16,6 +25,13 @@ StateWidget::StateWidget(int flag,int index,QWidget *parent) : QWidget(parent)
if(flag == 0)
{
label = new QLabel("0");
QFont font;
font.setFamily("Arial");
font.setBold(false);
font.setPixelSize(20);
label->setFont(font);
label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
label->setFixedSize(w/2,h+m_offset);
setColor(state::gray);
@@ -24,6 +40,13 @@ StateWidget::StateWidget(int flag,int index,QWidget *parent) : QWidget(parent)
else
{
bar = new QProgressBar();
QFont font;
font.setFamily("Arial");
font.setBold(false);
font.setPixelSize(20);
bar->setFont(font);
bar->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
bar->setRange(0,100);
bar->setValue(0);
@@ -37,6 +60,7 @@ StateWidget::StateWidget(int flag,int index,QWidget *parent) : QWidget(parent)
StateWidget::StateWidget(int flag, QString t,QVariant v,state s,int index, QWidget *parent) : QWidget(parent)
{
this->setMouseTracking(true);
id = index;
@@ -46,6 +70,13 @@ StateWidget::StateWidget(int flag, QString t,QVariant v,state s,int index, QWidg
title = new QLabel(t);
QFont font;
font.setFamily("Arial");
font.setBold(false);
font.setPixelSize(20);
title->setFont(font);
title->setAlignment(Qt::AlignLeft | Qt::AlignVCenter);
title->setFixedSize(w/2,h+m_offset);
@@ -54,6 +85,13 @@ StateWidget::StateWidget(int flag, QString t,QVariant v,state s,int index, QWidg
if(flag == 0)
{
label = new QLabel(v.toString());
QFont font;
font.setFamily("Arial");
font.setBold(false);
font.setPixelSize(20);
label->setFont(font);
label->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
label->setFixedSize(w/2,h+m_offset);
setColor(s);
@@ -62,6 +100,13 @@ StateWidget::StateWidget(int flag, QString t,QVariant v,state s,int index, QWidg
else
{
bar = new QProgressBar();
QFont font;
font.setFamily("Arial");
font.setBold(false);
font.setPixelSize(20);
bar->setFont(font);
bar->setFormat("%v");
bar->setAlignment(Qt::AlignHCenter | Qt::AlignVCenter);
bar->setRange(0,100);
@@ -98,6 +143,81 @@ StateWidget::~StateWidget()
}
}
void StateWidget::mousePressEvent(QMouseEvent *event)
{
Q_UNUSED(event)
}
void StateWidget::mouseReleaseEvent(QMouseEvent *event)
{
Q_UNUSED(event)
}
void StateWidget::mouseMoveEvent(QMouseEvent *event)
{
Q_UNUSED(event)
}
void StateWidget::enterEvent(QEvent * event)
{
Q_UNUSED(event)
this->resize(this->size().width() + 6,this->height() + 6);
if(title)
{
QFont font = title->font();
font.setBold(true);
font.setPixelSize(23);
title->setFont(font);
}
if(label)
{
QFont font = label->font();
font.setBold(true);
font.setPixelSize(23);
label->setFont(font);
}
if(bar)
{
QFont font = bar->font();
font.setBold(true);
font.setPixelSize(23);
bar->setFont(font);
}
}
void StateWidget::leaveEvent(QEvent *event)
{
this->resize(this->size().width() - 6,this->height() - 6);
if(title)
{
QFont font = title->font();
font.setBold(false);
font.setPixelSize(20);
title->setFont(font);
}
if(label)
{
QFont font = label->font();
font.setBold(false);
font.setPixelSize(20);
label->setFont(font);
}
if(bar)
{
QFont font = bar->font();
font.setBold(false);
font.setPixelSize(20);
bar->setFont(font);
}
}
void StateWidget::setColor(state s)
{
@@ -144,20 +264,31 @@ void StateWidget::setValue(QString s)
for (QMap<QVariant,state>::iterator i = stateMap.begin(); i != stateMap.end(); ++i) {
if((value >= last) &&(value < i.key().toDouble()))
if(i == stateMap.begin())
{
if(value < i.key().toDouble())
{
setColor(state::red);
break;
}
}
else
{
if((value >= last) &&(value <= i.key().toDouble()))
{
setColor(i.value());
break;
}
}
last = i.key().toDouble();
if(i == stateMap.end())//overflow is red
if((i+1) == stateMap.end())//overflow is red
{
if((value >= last) &&(value < max))
if(value > (i+1).key().toDouble())
{
setColor(state::red);
break;
}
}
+11
View File
@@ -17,6 +17,7 @@
#include "QLabel"
#include "QProgressBar"
#include "QGridLayout"
#include "QFont"
class StateWidget :public QWidget
{
@@ -87,6 +88,16 @@ public slots:
protected:
//鼠标按下事件处理函数
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void enterEvent(QEvent * event);
void leaveEvent(QEvent *event);
private slots:
+13 -13
View File
@@ -30,10 +30,10 @@ StatusUI::StatusUI(QWidget *parent) :
install(mode,0,"飞行模式",0,QMap<QVariant, StateWidget::state>{{"待机",StateWidget::state::gray},{"手动",StateWidget::state::orange},{"自主",StateWidget::state::green}});
install(base,0,"攻角[°]",0,QMap<QVariant, StateWidget::state>{{-20,StateWidget::state::red},{20,StateWidget::state::green},{90,StateWidget::state::red}});
install(base,0,"侧滑角[°]",0,QMap<QVariant, StateWidget::state>{{-20,StateWidget::state::red},{20,StateWidget::state::green},{90,StateWidget::state::red}});
install(base,0,"滚转角[°]",0,QMap<QVariant, StateWidget::state>{{-45,StateWidget::state::red},{45,StateWidget::state::green},{90,StateWidget::state::red}});
install(base,0,"俯仰角[°]",0,QMap<QVariant, StateWidget::state>{{-20,StateWidget::state::red},{20,StateWidget::state::green},{90,StateWidget::state::red}});
install(base,0,"攻角[°]",0,QMap<QVariant, StateWidget::state>{{-20,StateWidget::state::red},{20,StateWidget::state::green}});
install(base,0,"侧滑角[°]",0,QMap<QVariant, StateWidget::state>{{-20,StateWidget::state::red},{20,StateWidget::state::green}});
install(base,0,"滚转角[°]",0,QMap<QVariant, StateWidget::state>{{-45,StateWidget::state::red},{45,StateWidget::state::green}});
install(base,0,"俯仰角[°]",0,QMap<QVariant, StateWidget::state>{{-20,StateWidget::state::red},{20,StateWidget::state::green}});
install(base,0,"航迹角[°]",0);
install(base,0,"海拔[m]",0);
install(base,0,"表速[m/s]",0,QMap<QVariant, StateWidget::state>{{100,StateWidget::state::red},{700,StateWidget::state::green}});
@@ -94,18 +94,18 @@ StatusUI::StatusUI(QWidget *parent) :
//install(state,0,"开伞状态",0);
install(battery,0,"飞控电压[V]",0,
QMap<QVariant, StateWidget::state>{{"23",StateWidget::state::red},
{"24",StateWidget::state::orange},
{"50",StateWidget::state::green}});
QMap<QVariant, StateWidget::state>{{23,StateWidget::state::red},
{24,StateWidget::state::orange},
{50,StateWidget::state::green}});
install(battery,0,"舵机电压[V]",0,
QMap<QVariant, StateWidget::state>{{"46",StateWidget::state::red},
{"48",StateWidget::state::orange},
{"80",StateWidget::state::green}});
QMap<QVariant, StateWidget::state>{{46,StateWidget::state::red},
{48,StateWidget::state::orange},
{80,StateWidget::state::green}});
install(communication,0,"信号[%]",0,
QMap<QVariant, StateWidget::state>{{"50",StateWidget::state::red},
{"80",StateWidget::state::orange},
{"100",StateWidget::state::green}});
QMap<QVariant, StateWidget::state>{{50,StateWidget::state::red},
{80,StateWidget::state::orange},
{100,StateWidget::state::green}});
install(communication,0,"接收[B/s]",0);
install(communication,0,"发送[B/s]",0);
+1 -39
View File
@@ -7,11 +7,10 @@
.QLabel {
font: 20px "Arial";
}
.QProgressBar {
font: 20px "Arial";
background-color: #BDBDBD;
border-color: #BDBDBD;
}
@@ -21,43 +20,6 @@
}
.QLabel#label_mode{
font: 15px "Arial";
font-weight:bold;
font-italic:true;
}
.QLabel#label_base{
font: 15px "Arial";
font-weight:bold;
font-italic:true;
}
.QLabel#label_servo{
font: 15px "Arial";
font-weight:bold;
font-italic:true;
}
.QLabel#label_engine{
font: 15px "Arial";
font-weight:bold;
font-italic:true;
}
.QLabel#label_battery{
font: 15px "Arial";
font-weight:bold;
font-italic:true;
}
.QLabel#label_dlink{
font: 15px "Arial";
font-weight:bold;
font-italic:true;
}
.QLabel[state="0"] {
border-image:url(:/img/success_rect.png);
+15 -4
View File
@@ -466,7 +466,7 @@ bool DLink::setup_remote(const QString port, qint32 baud, QSerialPort::Parity pa
bool isSuccess = false;
QSerialPort *serialPort = new QSerialPort(port, this);
if (serialPort->open(QIODevice::ReadOnly))
if (serialPort->open(QIODevice::ReadWrite))
{
serialPort->setBaudRate(baud);
serialPort->setStopBits(QSerialPort::OneStop);
@@ -488,7 +488,7 @@ bool DLink::setup_rtk(const QString port, qint32 baudrate, QSerialPort::Parity p
bool isSuccess = false;
QSerialPort *serialPort = new QSerialPort(port, this);
if (serialPort->open(QIODevice::ReadOnly))
if (serialPort->open(QIODevice::ReadWrite))
{
serialPort->setBaudRate(baudrate);
serialPort->setStopBits(QSerialPort::OneStop);
@@ -564,15 +564,26 @@ void DLink::processPendingMulticastDatagrams(void)
void DLink::readRTKPendingDatagrams(void)
{
QObject *obj = sender();
//QObject *obj = sender();
QSerialPort *serialport = qobject_cast<QSerialPort *>(obj);
QSerialPort *serialport = qobject_cast<QSerialPort *>(sender());
if(serialport)
{
QByteArray datagram = serialport->readAll();
if(datagram.size() > 0)
{
//serialport->write(datagram);
QEvent *rtk_receive= new QEvent(QEvent::User);
QCoreApplication::sendEvent(nullptr,rtk_receive);
emit getRTK(SourceType::s_port,datagram);
}
}
+2
View File
@@ -8,6 +8,8 @@
#include "QDebug"
#include "mavlinknode.h"
#include "QEvent"
QT_BEGIN_NAMESPACE