舵机显示值下面添加数值条

This commit is contained in:
2022-11-29 20:40:50 +08:00
parent 3d76985f71
commit e0d96d43d7
7 changed files with 119 additions and 32 deletions
+66 -9
View File
@@ -1,6 +1,9 @@
#include "StateWidget.h"
#include "StateWidget.h"
StateWidget::StateWidget(int flag,int index, bool is_use_line, QWidget *parent) :
_is_use_line(is_use_line),
QWidget(parent)
StateWidget::StateWidget(int flag,int index,QWidget *parent) : QWidget(parent)
{
this->setMouseTracking(true);
@@ -58,10 +61,22 @@ StateWidget::StateWidget(int flag,int index,QWidget *parent) : QWidget(parent)
this->setLayout(gridlayout);
this->resize(w,h+ 2 * m_offset);
this->resize(w,h+ 2 * m_offset + 3);
//表示数值的那条线
if(_is_use_line)
{
value_line.setParent(this);
value_line.setStyleSheet("background-color: #01BBFF;");
value_line.resize(0, 2);
value_line.move(0, label->height() - 2);
gridlayout->addWidget(&value_line, 2, 1);
}
}
StateWidget::StateWidget(int flag, QString t,QVariant v,state s,int index, QWidget *parent) : QWidget(parent)
StateWidget::StateWidget(int flag, QString t,QVariant v,state s,int index,bool is_use_line, QWidget *parent) :
_is_use_line(is_use_line),
QWidget(parent)
{
this->setMouseTracking(true);
@@ -121,7 +136,20 @@ StateWidget::StateWidget(int flag, QString t,QVariant v,state s,int index, QWidg
type = flag;
this->setLayout(gridlayout);
this->resize(w,h + 2 * m_offset);
this->resize(w,h + 2 * m_offset + 3);
//表示数值的那条线
if(_is_use_line)
{
qDebug() << u8"使用线";
value_line.setParent(this);
value_line.setStyleSheet("background-color: #01BBFF;");
value_line.resize(0, 2);
value_line.move(0, label->height() - 2);
gridlayout->addWidget(&value_line, 2, 1);
}
}
@@ -167,7 +195,7 @@ void StateWidget::enterEvent(QEvent * event)
{
Q_UNUSED(event)
this->resize(this->size().width() + 6,this->height() + 6);
// this->resize(this->size().width() + 6,this->height() + 6);
if(title)
{
@@ -196,7 +224,7 @@ void StateWidget::enterEvent(QEvent * event)
void StateWidget::leaveEvent(QEvent *event)
{
this->resize(this->size().width() - 6,this->height() - 6);
// this->resize(this->size().width() - 6,this->height() - 6);
if(title)
{
@@ -223,6 +251,27 @@ void StateWidget::leaveEvent(QEvent *event)
}
}
void StateWidget::setLineValue(double value)
{
value_line.resize(0, 0);
double percent = value / m_max;
percent = qAbs(percent);
qDebug() << "value: " << value;
qDebug() << "m_max: " << m_max;
qDebug() << "percent: " << percent;
value_line.resize(label->width() / 2 * percent, 3); //设置线的宽度
qDebug() << u8"线的宽度:" << value_line.width();
if(value > 0)
{
value_line.move(label->pos().x() + label->width() / 2, label->pos().y() + label->height());
}
else
{
value_line.move(label->pos().x() + label->width() / 2 - value_line.width(), label->pos().y() + label->height());
}
}
void StateWidget::setColor(state s)
{
@@ -247,6 +296,11 @@ void StateWidget::setValue(QString s)
if(label)
{
label->setText(s);
QStringList str_list = s.split('|');
if(_is_use_line)
{
setLineValue(str_list[1].toDouble() ); //设置线的长度
}
}
@@ -281,8 +335,11 @@ void StateWidget::setValue(QString s)
*/
if(flag)//number
{
double last = min;
for (QMap<QVariant,state>::iterator i = stateMap.begin(); i != stateMap.end(); ++i) {
@@ -396,8 +453,8 @@ void StateWidget::setValue(QString s)
void StateWidget::setRange(double m_min,double m_max)
{
min = m_min;
max = m_max;
this->m_min = m_min;
this->m_max = m_max;
if(bar)
{
+14 -4
View File
@@ -1,4 +1,4 @@
#ifndef STATEWIDGET_H
#ifndef STATEWIDGET_H
#define STATEWIDGET_H
#include <QObject>
@@ -16,7 +16,7 @@
#include <QtGlobal>
#include "QLabel"
#include "QProgressBar"
#include "QGridLayout"
#include <QGridLayout>
#include "QFont"
class StateWidget :public QWidget
@@ -31,9 +31,9 @@ public:
gray = 3,
};
explicit StateWidget(int flag, int index = 0,QWidget *parent = nullptr);
explicit StateWidget(int flag, int index = 0,bool is_use_line = false, QWidget *parent = nullptr);
explicit StateWidget(int flag, QString t, QVariant v = 0, state s = state::gray, int index = 0, QWidget *parent = nullptr);
explicit StateWidget(int flag, QString t, QVariant v = 0, state s = state::gray, int index = 0, bool is_use_line = false, QWidget *parent = nullptr);
~StateWidget();
@@ -103,6 +103,12 @@ private slots:
private:
/**
* @brief 根据改变的值设置线的长度
* @param value 舵机反馈值
*/
void setLineValue(double value);
int w = 300;
int h = 20;
@@ -111,6 +117,10 @@ private:
double max = 99999999999999999;
double min = -99999999999999999;
bool _is_use_line; //是否使用数值线
double m_max = 0;
double m_min = 0;
QWidget value_line; //数值线
QGridLayout *gridlayout;
QLabel *title = nullptr;
QLabel *label = nullptr;
+26 -14
View File
@@ -1,4 +1,4 @@
#include "StatusUI.h"
#include "StatusUI.h"
#include "ui_StatusUI.h"
StatusUI::StatusUI(QWidget *parent) :
@@ -43,17 +43,29 @@ StatusUI::StatusUI(QWidget *parent) :
install(base,0,"马赫数[Ma]",0,QMap<QVariant, StateWidget::state>{{0.15,StateWidget::state::red},{0.8,StateWidget::state::green},{2,StateWidget::state::orange}});
//install(base,0,"爬升率[m/s]",0,QMap<QVariant, StateWidget::state>{{-80,StateWidget::state::red},{100,StateWidget::state::green},{500,StateWidget::state::orange}});
install(actuator,0,"左副翼[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}});
install(actuator,0,"副翼[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}});
install(actuator,0,"左升降[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}});
install(actuator,0,"升降[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}});
install(actuator,0,"左方向[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}});
install(actuator,0,"右方向[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}});
install(actuator,0,"左扰流[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}});
install(actuator,0,"扰流[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}});
install(actuator,0,"左变体[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}});
install(actuator,0,"右变体[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}});
install(actuator,0,"转向[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}});
StateWidget *t;
t = install(actuator,0,"副翼[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}}, true);
t->setRange(-30, 30);
t = install(actuator,0,"副翼[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}}, true);
t->setRange(-30, 30);
t = install(actuator,0,"左升降[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}}, true);
t->setRange(-20, 20);
t = install(actuator,0,"升降[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}}, true);
t->setRange(-20, 20);
t = install(actuator,0,"左方向[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}}, true);
t->setRange(-30, 30);
t = install(actuator,0,"右方向[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}}, true);
t->setRange(-30, 30);
t = install(actuator,0,"左扰流[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}}, true);
t->setRange(0, 60);
t = install(actuator,0,"右扰流[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}}, true);
t->setRange(0, 60);
t = install(actuator,0,"左变体[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}}, true);
t->setRange(0, 65);
t = install(actuator,0,"右变体[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}}, true);
t->setRange(0, 65);
t = install(actuator,0,"转向[°]",0,QMap<QVariant, StateWidget::state>{{2,StateWidget::state::red}}, true);
t->setRange(-17, 17);
//左副翼,右副翼,左升降,右升降,左方向,右方向,左扰流,右扰流,左变体,右变体
install(state,0,"油门[%]",0,
@@ -382,9 +394,9 @@ bool StatusUI::addGroup(int column,int index)
return flag;
}
StateWidget * StatusUI::install(StateGroup *group,int flag, QString name, QVariant value,QMap<QVariant,StateWidget::state> stats)
StateWidget * StatusUI::install(StateGroup *group,int flag, QString name, QVariant value,QMap<QVariant,StateWidget::state> stats, bool is_use_line)
{
StateWidget *w = new StateWidget(flag,name,value,StateWidget::state::gray,group->count());
StateWidget *w = new StateWidget(flag,name,value,StateWidget::state::gray,group->count(), is_use_line);
w->setStats(stats);
+2 -2
View File
@@ -1,4 +1,4 @@
#ifndef STATUSUI_H
#ifndef STATUSUI_H
#define STATUSUI_H
#include <QWidget>
@@ -47,7 +47,7 @@ private slots:
bool addGroup(int column, int index);
StateWidget *install(StateGroup *group, int flag, QString name, QVariant value, QMap<QVariant, StateWidget::state> stats);
StateWidget *install(StateGroup *group, int flag, QString name, QVariant value, QMap<QVariant, StateWidget::state> stats,bool is_use_line = false);
StateWidget *install(StateGroup *group,int flag, QString name, QVariant value);
StateWidget *install(int column, int index, int flag, QString name, QVariant value);
+11 -3
View File
@@ -1,4 +1,4 @@
.QFrame {
background-color: #FFFFFF;
@@ -6,8 +6,16 @@
.QLabel {
font :17px "黑体";
.QLabel
{
font-family: "黑体";
font-size:20px;
}
.QLabel:hover
{
font-family: "黑体";
font-size:23px;
}
.QProgressBar {
View File
View File