hide number when it close to black block
This commit is contained in:
+139
-749
@@ -8,6 +8,11 @@
|
||||
Cockpit::Cockpit(QWidget *parent): QWidget(parent)
|
||||
{
|
||||
// setMouseTracking(true);
|
||||
|
||||
|
||||
|
||||
leftladder = new LeftLadder(this);
|
||||
|
||||
//GPS初始化
|
||||
m_GPS.fixtype = 0;
|
||||
m_GPS.svn = 0;
|
||||
@@ -224,6 +229,7 @@ void Cockpit::paintEvent(QPaintEvent *)
|
||||
drawRollScale(&painter);
|
||||
drawYawScale(&painter);
|
||||
drawLeftScale(&painter);
|
||||
drawRightScale(&painter);
|
||||
//drawCenterLine(&painter);
|
||||
//drawText(&painter);
|
||||
//drawGPS(&painter);
|
||||
@@ -551,9 +557,10 @@ void Cockpit::drawYawScale(QPainter *painter)
|
||||
}
|
||||
|
||||
|
||||
//画左刻度尺
|
||||
//画左刻度尺 用单独的控件最容易解决
|
||||
void Cockpit::drawLeftScale(QPainter *painter)
|
||||
{
|
||||
|
||||
painter->save();
|
||||
|
||||
//平移坐标
|
||||
@@ -612,11 +619,12 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
|
||||
if((i%10) == 0)
|
||||
{
|
||||
//if((i * h > 100)||(i * h < -100))
|
||||
//{
|
||||
painter->drawLine( 220,i * h,290,i * h);
|
||||
painter->drawLine( 220,i * h,290,i * h);
|
||||
|
||||
if(((i + m_Attitude.airspeed)* h > 130)||((i + m_Attitude.airspeed) * h < -130))
|
||||
{
|
||||
painter->drawText(QRect(20,i * h - 30,190,60),Qt::AlignVCenter|Qt::AlignRight, strText);
|
||||
//}
|
||||
}
|
||||
}
|
||||
else if((i%5) == 0)
|
||||
{
|
||||
@@ -683,11 +691,11 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
//painter->drawText(QRect(200,-50,100,100),Qt::AlignVCenter|Qt::AlignLeft, UnitText);
|
||||
|
||||
float Unit = m_Attitude.airspeed - int(m_Attitude.airspeed)/10 * 10;
|
||||
|
||||
float Decimal = (m_Attitude.airspeed - int(m_Attitude.airspeed));
|
||||
|
||||
|
||||
qDebug() << Unit;
|
||||
for(int i = -2 - Unit;i<=(2 - Unit);i+=1)
|
||||
for(int i = -2 - Unit;i<(2 - Unit);i+=1)
|
||||
{
|
||||
|
||||
QString strText = QString::number(((-i < 0)?(-i+10):((-i>=10)?(-i-10):(-i)))); //设置当前字体
|
||||
@@ -701,10 +709,12 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
painter->drawText(QRect(200,(i + Unit) * 100 - 50,100,90),Qt::AlignVCenter|Qt::AlignLeft, strText);
|
||||
|
||||
|
||||
|
||||
|
||||
qDebug() << painter->window();
|
||||
|
||||
painter->drawText(QRect(200,(i + Unit) * 100 - 50,100,100),Qt::AlignVCenter|Qt::AlignLeft, strText);
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
@@ -716,793 +726,173 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
//画中间刻度
|
||||
void Cockpit::drawCenterLine(QPainter *painter)
|
||||
{
|
||||
QPen ePen;
|
||||
ePen.setColor(m_CentreLineColor);
|
||||
ePen.setWidth(10);
|
||||
QFont font;
|
||||
font.setPointSize(60);
|
||||
|
||||
|
||||
painter->save();
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
//中间线
|
||||
painter->drawLine(-600.0,0.0,-300.0,0.0);
|
||||
painter->drawLine( 300.0,0.0, 600.0,0.0);
|
||||
QPolygon polygonlefts,polygonright;
|
||||
|
||||
polygonlefts.setPoints(3,-300,0,-600,150,-450,150);
|
||||
polygonright.setPoints(3, 300,0, 600,150, 450,150);
|
||||
painter->drawPolygon(polygonlefts);
|
||||
painter->drawPolygon(polygonright);
|
||||
|
||||
|
||||
|
||||
//画滚转刻度线
|
||||
painter->drawArc(-700,-700,1400,1400,30*16,120*16);
|
||||
|
||||
//左边
|
||||
for(int i = 0;i<=60;i+=20)
|
||||
{
|
||||
QString strText = QString::number(i); //设置当前字体
|
||||
painter->save();
|
||||
painter->translate(0,0);
|
||||
painter->rotate(-i);
|
||||
painter->drawLine(0,-680,0,-720);
|
||||
painter->drawText(-30,-750, strText);
|
||||
painter->restore();
|
||||
}
|
||||
//右边
|
||||
for(int i = -20;i>=-60;i-=20)
|
||||
{
|
||||
QString strText = QString::number(i); //设置当前字体
|
||||
painter->save();
|
||||
painter->translate(0,0);
|
||||
painter->rotate(-i);
|
||||
painter->drawLine(0,-680,0,-720);
|
||||
painter->drawText(-60,-750, strText);
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
m_Max_Roll = m_RollValue + 60;
|
||||
m_Min_Roll = m_RollValue - 60;
|
||||
|
||||
|
||||
|
||||
painter->restore();
|
||||
|
||||
//画滚转指针
|
||||
painter->save();
|
||||
QPolygon polygonRoll;
|
||||
polygonRoll.setPoints(3, 0,-700, 50,-620, -50,-620);
|
||||
|
||||
QColor color;
|
||||
if((m_Attitude.roll >= -60)&&(m_Attitude.roll <=60))
|
||||
{
|
||||
color = QColor("#EEEE00");
|
||||
}else
|
||||
{
|
||||
color = QColor("#FF4500");
|
||||
}
|
||||
ePen.setColor(color);
|
||||
painter->setPen(ePen);
|
||||
painter->translate(0,0);
|
||||
painter->rotate(-m_Attitude.roll);
|
||||
painter->setBrush(color);
|
||||
painter->drawPolygon(polygonRoll);
|
||||
painter->restore();
|
||||
|
||||
|
||||
//画角速度
|
||||
painter->save();
|
||||
//画俯仰角速度
|
||||
QPolygon polygon1;
|
||||
QPolygon polygon2;
|
||||
QPolygon polygon3;
|
||||
|
||||
QPolygon polygon4;
|
||||
QPolygon polygon5;
|
||||
QPolygon polygon6;
|
||||
|
||||
//正向
|
||||
polygon1.setPoints(4,0,-120,-50, -70,0,-170,50,-70);
|
||||
polygon2.setPoints(4,0,-220,-50,-170,0,-270,50,-170);
|
||||
polygon3.setPoints(4,0,-320,-50,-270,0,-370,50,-270);
|
||||
//反向
|
||||
polygon4.setPoints(4,0, 120,-50, 70,0, 170,50, 70);
|
||||
polygon5.setPoints(4,0, 220,-50, 170,0, 270,50, 170);
|
||||
polygon6.setPoints(4,0, 320,-50, 270,0, 370,50, 270);
|
||||
|
||||
ePen.setColor(QColor("#EE4000"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EE4000"));//#EE4000红色
|
||||
//painter->drawPolygon(polygon1);
|
||||
//painter->drawPolygon(polygon2);
|
||||
//painter->drawPolygon(polygon3);
|
||||
//painter->drawPolygon(polygon4);
|
||||
//painter->drawPolygon(polygon5);
|
||||
//painter->drawPolygon(polygon6);
|
||||
|
||||
if((m_Attitude.gy >= 10.0f)&&(m_Attitude.gy < 20.0f))//如果俯仰角速度大于15度开始显示第一个三角形
|
||||
{
|
||||
ePen.setColor(QColor("#76EE00"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#76EE00"));//#76EE00绿色
|
||||
painter->drawPolygon(polygon1);
|
||||
}
|
||||
else if((m_Attitude.gy >= 20.0f)&&(m_Attitude.gy < 30.0f))//显示第一第二个
|
||||
{
|
||||
ePen.setColor(QColor("#EEC900"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EEC900"));//#EEC900橙色
|
||||
painter->drawPolygon(polygon1);
|
||||
painter->drawPolygon(polygon2);
|
||||
}
|
||||
else if(m_Attitude.gy >= 30.0f)//显示三个颜色是红色
|
||||
{
|
||||
ePen.setColor(QColor("#EE4000"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EE4000"));//#EE4000红色
|
||||
painter->drawPolygon(polygon1);
|
||||
painter->drawPolygon(polygon2);
|
||||
painter->drawPolygon(polygon3);
|
||||
}
|
||||
else if((m_Attitude.gy <= -10.0f)&&(m_Attitude.gy > -20.0f))//如果俯仰角速度小于-15度开始显示第一个三角形绿色
|
||||
{
|
||||
ePen.setColor(QColor("#76EE00"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#76EE00"));//#76EE00绿色
|
||||
painter->drawPolygon(polygon4);
|
||||
}
|
||||
else if((m_Attitude.gy <= -20.0f)&&(m_Attitude.gy > -30.0f))//显示第一第二个橙色
|
||||
{
|
||||
ePen.setColor(QColor("#EEC900"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EEC900"));//#EEC900橙色
|
||||
painter->drawPolygon(polygon4);
|
||||
painter->drawPolygon(polygon5);
|
||||
}
|
||||
else if(m_Attitude.gy <= -30.0f)//显示三个颜色是红色
|
||||
{
|
||||
ePen.setColor(QColor("#EE4000"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EE4000"));//#EE4000红色
|
||||
painter->drawPolygon(polygon4);
|
||||
painter->drawPolygon(polygon5);
|
||||
painter->drawPolygon(polygon6);
|
||||
}
|
||||
|
||||
//画滚转角速度
|
||||
QPolygon polygon7;
|
||||
QPolygon polygon8;
|
||||
QPolygon polygon9;
|
||||
|
||||
QPolygon polygon10;
|
||||
QPolygon polygon11;
|
||||
QPolygon polygon12;
|
||||
|
||||
//正向
|
||||
polygon7.setPoints(4,250,-400,200,-450,300,-400,200,-350);
|
||||
polygon8.setPoints(4,350,-400,300,-450,400,-400,300,-350);
|
||||
polygon9.setPoints(4,450,-400,400,-450,500,-400,400,-350);
|
||||
//反向
|
||||
polygon10.setPoints(4,-250,-400,-200,-450,-300,-400,-200,-350);
|
||||
polygon11.setPoints(4,-350,-400,-300,-450,-400,-400,-300,-350);
|
||||
polygon12.setPoints(4,-450,-400,-400,-450,-500,-400,-400,-350);
|
||||
|
||||
ePen.setColor(QColor("#EE4000"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EE4000"));//#EE4000红色
|
||||
//painter->drawPolygon(polygon7);
|
||||
//painter->drawPolygon(polygon8);
|
||||
//painter->drawPolygon(polygon9);
|
||||
//painter->drawPolygon(polygon10);
|
||||
//painter->drawPolygon(polygon11);
|
||||
//painter->drawPolygon(polygon12);
|
||||
|
||||
if((m_Attitude.gx >= 10.0f)&&(m_Attitude.gx < 20.0f))//如果俯仰角速度大于15度开始显示第一个三角形
|
||||
{
|
||||
ePen.setColor(QColor("#76EE00"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#76EE00"));//#76EE00绿色
|
||||
painter->drawPolygon(polygon7);
|
||||
}
|
||||
else if((m_Attitude.gx >= 20.0f)&&(m_Attitude.gx < 30.0f))//显示第一第二个
|
||||
{
|
||||
ePen.setColor(QColor("#EEC900"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EEC900"));//#EEC900橙色
|
||||
painter->drawPolygon(polygon7);
|
||||
painter->drawPolygon(polygon8);
|
||||
}
|
||||
else if(m_Attitude.gx >= 30.0f)//显示三个颜色是红色
|
||||
{
|
||||
ePen.setColor(QColor("#EE4000"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EE4000"));//#EE4000红色
|
||||
painter->drawPolygon(polygon7);
|
||||
painter->drawPolygon(polygon8);
|
||||
painter->drawPolygon(polygon9);
|
||||
}
|
||||
else if((m_Attitude.gx <= -10.0f)&&(m_Attitude.gx > -20.0f))//如果俯仰角速度小于-15度开始显示第一个三角形绿色
|
||||
{
|
||||
ePen.setColor(QColor("#76EE00"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#76EE00"));//#76EE00绿色
|
||||
painter->drawPolygon(polygon10);
|
||||
}
|
||||
else if((m_Attitude.gx <= -20.0f)&&(m_Attitude.gx > -30.0f))//显示第一第二个橙色
|
||||
{
|
||||
ePen.setColor(QColor("#EEC900"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EEC900"));//#EEC900橙色
|
||||
painter->drawPolygon(polygon10);
|
||||
painter->drawPolygon(polygon11);
|
||||
}
|
||||
else if(m_Attitude.gx <= -30.0f)//显示三个颜色是红色
|
||||
{
|
||||
ePen.setColor(QColor("#EE4000"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EE4000"));//#EE4000红色
|
||||
painter->drawPolygon(polygon10);
|
||||
painter->drawPolygon(polygon11);
|
||||
painter->drawPolygon(polygon12);
|
||||
}
|
||||
|
||||
//画偏航角速度
|
||||
QPolygon polygon13;
|
||||
QPolygon polygon14;
|
||||
QPolygon polygon15;
|
||||
|
||||
QPolygon polygon16;
|
||||
QPolygon polygon17;
|
||||
QPolygon polygon18;
|
||||
|
||||
//正向
|
||||
polygon13.setPoints(4,250,-900,200,-950,300,-900,200,-850);
|
||||
polygon14.setPoints(4,350,-900,300,-950,400,-900,300,-850);
|
||||
polygon15.setPoints(4,450,-900,400,-950,500,-900,400,-850);
|
||||
//反向
|
||||
polygon16.setPoints(4,-250,-900,-200,-950,-300,-900,-200,-850);
|
||||
polygon17.setPoints(4,-350,-900,-300,-950,-400,-900,-300,-850);
|
||||
polygon18.setPoints(4,-450,-900,-400,-950,-500,-900,-400,-850);
|
||||
|
||||
ePen.setColor(QColor("#EE4000"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EE4000"));//#EE4000红色
|
||||
//painter->drawPolygon(polygon13);
|
||||
//painter->drawPolygon(polygon14);
|
||||
//painter->drawPolygon(polygon15);
|
||||
//painter->drawPolygon(polygon16);
|
||||
//painter->drawPolygon(polygon17);
|
||||
//painter->drawPolygon(polygon18);
|
||||
|
||||
if((m_Attitude.gz >= 10.0f)&&(m_Attitude.gz < 20.0f))//如果俯仰角速度大于15度开始显示第一个三角形
|
||||
{
|
||||
ePen.setColor(QColor("#76EE00"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#76EE00"));//#76EE00绿色
|
||||
painter->drawPolygon(polygon13);
|
||||
}
|
||||
else if((m_Attitude.gz >= 20.0f)&&(m_Attitude.gz < 30.0f))//显示第一第二个
|
||||
{
|
||||
ePen.setColor(QColor("#EEC900"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EEC900"));//#EEC900橙色
|
||||
painter->drawPolygon(polygon13);
|
||||
painter->drawPolygon(polygon14);
|
||||
}
|
||||
else if(m_Attitude.gz >= 30.0f)//显示三个颜色是红色
|
||||
{
|
||||
ePen.setColor(QColor("#EE4000"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EE4000"));//#EE4000红色
|
||||
painter->drawPolygon(polygon13);
|
||||
painter->drawPolygon(polygon14);
|
||||
painter->drawPolygon(polygon15);
|
||||
}
|
||||
else if((m_Attitude.gz <= -10.0f)&&(m_Attitude.gz > -20.0f))//如果俯仰角速度小于-15度开始显示第一个三角形绿色
|
||||
{
|
||||
ePen.setColor(QColor("#76EE00"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#76EE00"));//#76EE00绿色
|
||||
painter->drawPolygon(polygon16);
|
||||
}
|
||||
else if((m_Attitude.gz <= -20.0f)&&(m_Attitude.gz > -30.0f))//显示第一第二个橙色
|
||||
{
|
||||
ePen.setColor(QColor("#EEC900"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EEC900"));//#EEC900橙色
|
||||
painter->drawPolygon(polygon16);
|
||||
painter->drawPolygon(polygon17);
|
||||
}
|
||||
else if(m_Attitude.gz <= -30.0f)//显示三个颜色是红色
|
||||
{
|
||||
ePen.setColor(QColor("#EE4000"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#EE4000"));//#EE4000红色
|
||||
painter->drawPolygon(polygon16);
|
||||
painter->drawPolygon(polygon17);
|
||||
painter->drawPolygon(polygon18);
|
||||
}
|
||||
|
||||
|
||||
painter->restore();
|
||||
|
||||
}
|
||||
|
||||
void Cockpit::drawLowPanel(QPainter *painter)
|
||||
{
|
||||
QPen ePen;
|
||||
ePen.setWidth(10);
|
||||
|
||||
//画左刻度尺 用单独的控件最容易解决
|
||||
void Cockpit::drawRightScale(QPainter *painter)
|
||||
{
|
||||
|
||||
painter->save();
|
||||
|
||||
//平移坐标
|
||||
painter->translate(800,0);
|
||||
|
||||
QPen ePen;
|
||||
QFont font;
|
||||
//画边界
|
||||
/* painter->save();
|
||||
ePen.setColor(QColor("#000000"));
|
||||
painter->setPen(ePen);
|
||||
painter->drawLine(-1000,400,1000,400);
|
||||
painter->drawLine(-400,400,-400,1000);
|
||||
painter->drawLine(400,400,400,1000);
|
||||
//画一个半透明的小方块
|
||||
painter->save();
|
||||
painter->setOpacity(0.3f);
|
||||
ePen.setColor(QColor("#7A7A7A"));
|
||||
painter->setBrush(QColor("#7A7A7A"));
|
||||
painter->drawRect(0,-600,300,1200);
|
||||
painter->restore();
|
||||
*/
|
||||
//画底色
|
||||
|
||||
//画最底下的黑色单位显示框
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#FFFFFF"));
|
||||
painter->setPen(ePen);
|
||||
painter->setBrush(QColor("#FFFFFF"));
|
||||
painter->drawRoundedRect(-990,410,580,580,50,50);
|
||||
painter->drawRoundedRect(-390,410,780,580,50,50);
|
||||
painter->drawRoundedRect(410,410,580,580,50,50);
|
||||
painter->restore();
|
||||
//画升降速度表盘
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#000000"));
|
||||
ePen.setWidth(10);
|
||||
|
||||
|
||||
font.setPixelSize(60);
|
||||
|
||||
painter->setPen(ePen);
|
||||
|
||||
int VstartAngle = 120 * 16;
|
||||
int VspanAngle = 120 * 16;
|
||||
painter->drawArc(-980,420,560,560,VstartAngle,VspanAngle);
|
||||
painter->restore();
|
||||
|
||||
//画刻度
|
||||
for(int i = 0;i<5;i++)
|
||||
{
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#000000"));
|
||||
ePen.setWidth(10);
|
||||
painter->setPen(ePen);
|
||||
font.setPixelSize(70);
|
||||
painter->setFont(font);
|
||||
painter->translate(-700,700);
|
||||
painter->rotate(15*i);
|
||||
painter->drawLine(-280,0,-260,0);
|
||||
if((i%2 == 0)&&(i != 0))
|
||||
{
|
||||
painter->drawText(-240,-30,60,60,Qt::AlignCenter,QString::number(i));
|
||||
}
|
||||
painter->restore();
|
||||
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#000000"));
|
||||
ePen.setWidth(10);
|
||||
painter->setPen(ePen);
|
||||
font.setPixelSize(70);
|
||||
painter->setFont(font);
|
||||
painter->translate(-700,700);
|
||||
painter->rotate(-15*i);
|
||||
painter->drawLine(-280,0,-260,0);
|
||||
if(i%2 == 0)
|
||||
{
|
||||
painter->drawText(-240,-30,60,60,Qt::AlignCenter,QString::number(-i));
|
||||
}
|
||||
painter->restore();
|
||||
}
|
||||
//画指针
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#000000"));
|
||||
ePen.setWidth(10);
|
||||
painter->setPen(ePen);
|
||||
painter->translate(-700,700);
|
||||
painter->rotate(m_Attitude.verticalspeed * 15);
|
||||
QPolygon polygon;
|
||||
polygon.setPoints(3,-160,0,0,-20,0,20);
|
||||
painter->setFont(font);
|
||||
painter->setBrush(QColor("#000000"));
|
||||
painter->drawPolygon(polygon);
|
||||
painter->drawEllipse(-20,-20,40,40);
|
||||
painter->drawRect(0,600,300,100);
|
||||
|
||||
painter->drawText(QRect(20,600,280,100),Qt::AlignLeft|Qt::AlignVCenter,"Hei " + QString::number(m_Attitude.airspeed));
|
||||
|
||||
painter->restore();
|
||||
|
||||
//画单位和示数
|
||||
|
||||
//画旁边的速度刻度,并显示
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#000000"));
|
||||
ePen.setWidth(10);
|
||||
painter->setPen(ePen);
|
||||
font.setPixelSize(140);
|
||||
painter->setFont(font);
|
||||
painter->translate(-700,700);
|
||||
painter->drawText(-40,-290,280,140,Qt::AlignCenter,tr("m/s"));
|
||||
painter->drawText(-40,140,280,140,Qt::AlignCenter,QString::number(m_Attitude.verticalspeed,'f',1));
|
||||
painter->restore();
|
||||
|
||||
painter->translate(0,1200.0f/40.0f * m_Attitude.airspeed);
|
||||
|
||||
float h = 1200.0f/40.0f;//单位高度
|
||||
|
||||
|
||||
|
||||
//画空速表盘
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#000000"));
|
||||
ePen.setWidth(10);
|
||||
painter->setPen(ePen);
|
||||
|
||||
int HstartAngle = -30 * 16;
|
||||
int HspanAngle = 240 * 16;
|
||||
|
||||
painter->drawArc(420,420,560,560,HstartAngle,HspanAngle);
|
||||
painter->restore();
|
||||
|
||||
|
||||
//画刻度
|
||||
for(int i = 0;i<7;i++)
|
||||
for(int i = -19 - m_Attitude.airspeed;i<=(19 - m_Attitude.airspeed);i+=1)
|
||||
{
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#000000"));
|
||||
ePen.setWidth(10);
|
||||
painter->setPen(ePen);
|
||||
font.setPixelSize(70);
|
||||
painter->setFont(font);
|
||||
painter->translate(700,700);
|
||||
painter->rotate(20*i);
|
||||
painter->drawLine(0,-280,0,-260);
|
||||
if((i%2 == 0)&&(i != 0))
|
||||
{
|
||||
painter->drawText(-30,-240,60,60,Qt::AlignCenter,QString::number(30 + i*5));
|
||||
}
|
||||
painter->restore();
|
||||
|
||||
QString strText = QString::number(-i); //设置当前字体
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#000000"));
|
||||
ePen.setWidth(10);
|
||||
|
||||
font.setPixelSize(70);
|
||||
painter->setFont(font);
|
||||
QPen ePen;
|
||||
QFont font;
|
||||
ePen.setColor(m_CentreLineColor);
|
||||
ePen.setWidth(10);
|
||||
font.setPointSize(60);
|
||||
|
||||
painter->setPen(ePen);
|
||||
painter->translate(700,700);
|
||||
painter->rotate(-20*i);
|
||||
painter->drawLine(0,-280,0,-260);
|
||||
if(i%2 == 0)
|
||||
painter->setFont(font);
|
||||
|
||||
if((i%10) == 0)
|
||||
{
|
||||
painter->drawText(-30,-240,60,60,Qt::AlignCenter,QString::number(30 - i*5));
|
||||
//if((i * h > 100)||(i * h < -100))
|
||||
//{
|
||||
painter->drawLine(0,i * h,70,i * h);
|
||||
painter->drawText(QRect(-20,i * h - 30,190,60),Qt::AlignVCenter|Qt::AlignRight, strText);
|
||||
//}
|
||||
}
|
||||
else if((i%2) == 0)
|
||||
{
|
||||
painter->drawLine(0,i * h,50,i * h);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
//画指针
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#000000"));
|
||||
ePen.setWidth(10);
|
||||
painter->setPen(ePen);
|
||||
painter->translate(700,700);
|
||||
painter->rotate(m_Attitude.airspeed * 4 -120);
|
||||
//QPolygon polygon;
|
||||
polygon.setPoints(3,-20,0,0,-160,20,0);
|
||||
painter->setBrush(QColor("#000000"));
|
||||
painter->drawPolygon(polygon);
|
||||
painter->drawEllipse(-20,-20,40,40);
|
||||
painter->restore();
|
||||
|
||||
//画单位和示数
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#000000"));
|
||||
ePen.setWidth(10);
|
||||
painter->setPen(ePen);
|
||||
painter->translate(700,700);
|
||||
|
||||
font.setPixelSize(80);
|
||||
painter->setFont(font);
|
||||
painter->drawText(-300,20,600,100,Qt::AlignCenter,tr("m/s"));
|
||||
|
||||
font.setPixelSize(140);
|
||||
painter->setFont(font);
|
||||
painter->drawText(-300,140,600,140,Qt::AlignCenter,QString::number(m_Attitude.airspeed,'f',1));
|
||||
painter->restore();
|
||||
|
||||
|
||||
//绘制中间盘的信息
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#000000"));
|
||||
ePen.setWidth(10);
|
||||
painter->setPen(ePen);
|
||||
painter->translate(0,700);
|
||||
|
||||
font.setPixelSize(140);
|
||||
painter->setFont(font);
|
||||
|
||||
QString GPS_Str = "";
|
||||
GPS_Str.append(tr("GPS:"));
|
||||
GPS_Str.append(QString::number(m_GPS.fixtype) + tr(" "));
|
||||
GPS_Str.append(QString::number(m_GPS.svn));
|
||||
|
||||
|
||||
painter->drawText(-380,-290,760,140,Qt::AlignLeft,GPS_Str);
|
||||
|
||||
|
||||
painter->restore();
|
||||
|
||||
|
||||
static const QPointF points1[11] = {
|
||||
QPointF( 25,-50),
|
||||
QPointF(200,-50),
|
||||
QPointF(200,-100),
|
||||
QPointF(300,-100),
|
||||
|
||||
QPointF(300, 100),
|
||||
QPointF(200, 100),
|
||||
QPointF(200, 50),
|
||||
QPointF( 25, 50),
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void Cockpit::drawText(QPainter *painter)
|
||||
{
|
||||
painter->save();
|
||||
painter->setPen(m_CentreLineColor);
|
||||
painter->drawText(-60, 55,"Pitch");
|
||||
painter->drawText(-60, 65,QString::number(m_PitchValue,'f',1));
|
||||
painter->drawText( 35, 55,"Roll");
|
||||
painter->drawText( 35, 65,QString::number(m_RollValue,'f',1));
|
||||
painter->drawText(-10, 55,"Yaw");
|
||||
painter->drawText(-10, 65,QString::number(m_YawValue,'f',1));
|
||||
|
||||
|
||||
|
||||
painter->drawText(-68,-60,"GPS:");
|
||||
if(m_GPSStatusValue == 0)
|
||||
painter->drawText(-45,-60,tr("无效"));
|
||||
else
|
||||
painter->drawText(-45,-60,tr("正常"));
|
||||
painter->drawText(-68,-48,"NSV:");
|
||||
painter->drawText(-45,-48,QString::number(m_GPSStarValue,'f',0));
|
||||
|
||||
m_GroundColor = Qt::darkCyan;
|
||||
painter->setBrush(m_GroundColor);
|
||||
painter->drawRect(-20,-88,40, 16);
|
||||
|
||||
painter->drawText(-12,-76,QString::number(m_CourseValue,'f',1));
|
||||
|
||||
//飞机模式
|
||||
m_GroundColor = Qt::darkCyan;
|
||||
painter->setBrush(m_GroundColor);
|
||||
painter->drawRect(-70, 72,40, 16);
|
||||
painter->drawText(-68, 84,m_AirplaneModeValue);
|
||||
//锁定状态
|
||||
if(m_LockStatusValue == "已解锁")
|
||||
m_GroundColor = Qt::darkRed;
|
||||
else if(m_LockStatusValue == "未解锁")
|
||||
m_GroundColor = Qt::darkGreen;
|
||||
else
|
||||
m_GroundColor = Qt::darkYellow;
|
||||
|
||||
painter->setBrush(m_GroundColor);
|
||||
painter->drawRect(-20, 72,40, 16);
|
||||
painter->drawText(-18, 84,m_LockStatusValue);
|
||||
//控制模式
|
||||
m_GroundColor = Qt::darkCyan;
|
||||
painter->setBrush(m_GroundColor);
|
||||
painter->drawRect( 30, 72,40, 16);
|
||||
painter->drawText( 38, 84,m_CtrlModeValue);
|
||||
|
||||
//飞行状态
|
||||
m_GroundColor = Qt::darkCyan;
|
||||
painter->setBrush(m_GroundColor);
|
||||
painter->drawRect(-70,-88,40, 16);
|
||||
painter->drawText(-62,-76,m_CurrentStatusValue);
|
||||
|
||||
//转弯状态
|
||||
m_GroundColor = Qt::darkCyan;
|
||||
painter->setBrush(m_GroundColor);
|
||||
painter->drawRect( 30,-88,40, 16);
|
||||
painter->drawText( 38,-76,m_TurningStatusValue);
|
||||
painter->restore();
|
||||
|
||||
|
||||
}
|
||||
|
||||
void Cockpit::drawGPS(QPainter *painter)
|
||||
{
|
||||
static const QPointF points[4] = {
|
||||
QPointF(-75.0,-90.0),
|
||||
QPointF(-90.0,-75.0),
|
||||
QPointF(-90.0, 75.0),
|
||||
QPointF(-75.0, 90.0)
|
||||
};
|
||||
QColor GPScolor = Qt::black;
|
||||
painter->save();
|
||||
painter->setBrush(GPScolor);
|
||||
painter->drawPolygon(points,8);
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
void Cockpit::drawHight(QPainter *painter)
|
||||
{
|
||||
static const QPointF points[4] = {
|
||||
QPointF(-80.0,-50.0),
|
||||
QPointF(-50.0,-30.0),
|
||||
QPointF(-50.0, 30.0),
|
||||
QPointF(-80.0, 50.0)
|
||||
QPointF( 25,-25),
|
||||
QPointF( 0, 0),
|
||||
QPointF( 25, 25)
|
||||
};
|
||||
|
||||
if(m_Protect != 0)
|
||||
{
|
||||
m_GroundColor = 0xff4500;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_GroundColor = Qt::darkCyan;
|
||||
}
|
||||
painter->save();
|
||||
painter->setBrush(m_ForeColor);
|
||||
painter->drawPolygon(points,4);
|
||||
painter->restore();
|
||||
painter->setBrush(QColor("#000000"));
|
||||
painter->drawPolygon(points1, 11);
|
||||
|
||||
painter->save();
|
||||
painter->setPen(m_CentreLineColor);
|
||||
m_GroundColor = Qt::darkCyan;
|
||||
painter->setBrush(m_GroundColor);
|
||||
painter->drawRect(-88,-20,35, 16);
|
||||
painter->drawText(-86,-8,QString::number(m_GPSAltitudeValue,'f',1));
|
||||
|
||||
painter->drawText(-88,-25,tr("海拔"));
|
||||
|
||||
painter->drawRect(-88,4,35, 16);
|
||||
painter->drawText(-86,17,QString::number(m_PressureAltitudeValue,'f',1));
|
||||
ePen.setColor(m_CentreLineColor);
|
||||
ePen.setWidth(15);
|
||||
font.setPointSize(90);
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
QString DacadeText = QString::number(int(m_Attitude.airspeed/10)); //设置十位以上
|
||||
QString UnitText = QString::number(qAbs(int(m_Attitude.airspeed)%10)); //设置个位
|
||||
painter->drawText(QRect(0,-50,200,100),Qt::AlignVCenter|Qt::AlignRight, DacadeText);
|
||||
//painter->drawText(QRect(200,-50,100,100),Qt::AlignVCenter|Qt::AlignLeft, UnitText);
|
||||
|
||||
float Unit = m_Attitude.airspeed - int(m_Attitude.airspeed)/10 * 10;
|
||||
float Decimal = (m_Attitude.airspeed - int(m_Attitude.airspeed));
|
||||
|
||||
|
||||
//qDebug() << Unit;
|
||||
for(int i = -2 - Unit;i<(2 - Unit);i+=1)
|
||||
{
|
||||
|
||||
QString strText = QString::number(((-i < 0)?(-i+10):((-i>=10)?(-i-10):(-i)))); //设置当前字体
|
||||
painter->save();
|
||||
|
||||
QPen ePen;
|
||||
QFont font;
|
||||
ePen.setColor(m_CentreLineColor);
|
||||
ePen.setWidth(15);
|
||||
font.setPointSize(90);
|
||||
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
painter->drawText(QRect(200,(i + Unit) * 100 - 50,100,90),Qt::AlignVCenter|Qt::AlignLeft, strText);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
|
||||
//painter->restore();
|
||||
|
||||
|
||||
|
||||
painter->drawText(-88,33,tr("气压"));
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
void Cockpit::drawSpeed(QPainter *painter)
|
||||
{
|
||||
static const QPointF points[4] = {
|
||||
QPointF( 80.0,-50.0),
|
||||
QPointF( 50.0,-30.0),
|
||||
QPointF( 50.0, 30.0),
|
||||
QPointF( 80.0, 50.0)
|
||||
};
|
||||
|
||||
if(m_Protect != 0)
|
||||
{
|
||||
m_GroundColor = 0xff4500;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_GroundColor = Qt::darkCyan;
|
||||
}
|
||||
painter->save();
|
||||
painter->setBrush(m_ForeColor);
|
||||
painter->drawPolygon(points,4);
|
||||
painter->restore();
|
||||
|
||||
painter->save();
|
||||
painter->setPen(m_CentreLineColor);
|
||||
m_GroundColor = Qt::darkCyan;
|
||||
painter->setBrush(m_GroundColor);
|
||||
painter->drawRect( 53,-20,35, 16);
|
||||
painter->drawText( 55,-8,QString::number(m_air_speed,'f',1));
|
||||
|
||||
painter->drawText( 64,-25,tr("空速"));
|
||||
|
||||
painter->drawRect( 53,4,35, 16);
|
||||
painter->drawText( 55,17,QString::number(m_gps_speed,'f',1));
|
||||
|
||||
painter->drawText( 64,33,tr("地速"));
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
void Cockpit::drawBattery(QPainter *painter)
|
||||
{
|
||||
static const QPointF points[8] = {
|
||||
QPointF( 68.0,-68.0),
|
||||
QPointF( 68.0,-52.0),
|
||||
QPointF( 36.0,-52.0),
|
||||
QPointF( 36.0,-56.0),
|
||||
QPointF( 34.0,-56.0),
|
||||
QPointF( 34.0,-64.0),
|
||||
QPointF( 36.0,-64.0),
|
||||
QPointF( 36.0,-68.0)
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
if(m_BatteryValue < m_BatteryMinValue)
|
||||
{
|
||||
m_ForeColor = Qt::red;
|
||||
}
|
||||
else if(m_BatteryValue > m_BatteryMaxValue)
|
||||
{
|
||||
m_ForeColor = Qt::green;
|
||||
}
|
||||
else
|
||||
{
|
||||
m_ForeColor = Qt::white;
|
||||
}
|
||||
painter->save();
|
||||
painter->setBrush(m_ForeColor);
|
||||
painter->drawPolygon(points,8);
|
||||
painter->restore();
|
||||
|
||||
painter->save();
|
||||
painter->setPen(m_CentreLineColor);
|
||||
painter->drawText( 37,-42,QString::number(m_BatteryValue,'f',1)+"V");
|
||||
painter->restore();
|
||||
|
||||
double B;
|
||||
B = (m_BatteryValue - m_BatteryMinValue)/(m_BatteryMaxValue - m_BatteryMinValue);
|
||||
quint8 Flag = 0;
|
||||
if(B<=0.25)
|
||||
Flag = 1;
|
||||
else if(B <= 0.5)
|
||||
Flag = 2;
|
||||
else if(B<=0.75)
|
||||
Flag = 3;
|
||||
else
|
||||
Flag = 4;
|
||||
switch(Flag)
|
||||
{
|
||||
case 4:
|
||||
{
|
||||
m_ForeColor = Qt::black;
|
||||
painter->save();
|
||||
painter->setBrush(m_ForeColor);
|
||||
painter->drawRect(37,-66,6,12);
|
||||
painter->restore();
|
||||
}
|
||||
case 3:
|
||||
{
|
||||
m_ForeColor = Qt::black;
|
||||
painter->save();
|
||||
painter->setBrush(m_ForeColor);
|
||||
painter->drawRect(45,-66,6,12);
|
||||
painter->restore();
|
||||
}
|
||||
case 2:
|
||||
{
|
||||
m_ForeColor = Qt::black;
|
||||
painter->save();
|
||||
painter->setBrush(m_ForeColor);
|
||||
painter->drawRect(53,-66,6,12);
|
||||
painter->restore();
|
||||
}
|
||||
case 1:
|
||||
{
|
||||
m_ForeColor = Qt::black;
|
||||
painter->save();
|
||||
painter->setBrush(m_ForeColor);
|
||||
painter->drawRect(61,-66,6,12);
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -4,6 +4,9 @@
|
||||
#include <QWidget>
|
||||
#include <QMouseEvent>
|
||||
|
||||
#include "leftladder.h"
|
||||
|
||||
|
||||
class QColor;
|
||||
|
||||
class Cockpit: public QWidget
|
||||
@@ -116,6 +119,7 @@ protected:
|
||||
|
||||
void drawYawScale(QPainter *painter);
|
||||
void drawLeftScale(QPainter *painter);
|
||||
void drawRightScale(QPainter *painter);
|
||||
|
||||
void drawCenterLine(QPainter *painter);
|
||||
void drawText(QPainter *painter);
|
||||
@@ -202,6 +206,19 @@ private:
|
||||
|
||||
QPoint m_c;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
LeftLadder *leftladder;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
};
|
||||
|
||||
|
||||
|
||||
|
||||
#endif // ALTITUDEPANEL_H
|
||||
|
||||
+4
-2
@@ -26,10 +26,12 @@ DEFINES += QT_DEPRECATED_WARNINGS
|
||||
|
||||
|
||||
HEADERS += \
|
||||
$$PWD/Cockpit.h
|
||||
$$PWD/Cockpit.h \
|
||||
leftladder.h
|
||||
|
||||
SOURCES += \
|
||||
$$PWD/Cockpit.cpp
|
||||
$$PWD/Cockpit.cpp \
|
||||
leftladder.cpp
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,244 @@
|
||||
#include "leftladder.h"
|
||||
|
||||
LeftLadder::LeftLadder(QWidget *parent): QWidget(parent)
|
||||
{
|
||||
|
||||
m_CentreLineColor = Qt::white;
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
void LeftLadder::setAirSpeed(float speed)
|
||||
{
|
||||
airspeed = speed;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
void LeftLadder::mouseReleaseEvent(QMouseEvent *e)
|
||||
{
|
||||
qDebug() << "release" << e;
|
||||
update();
|
||||
}
|
||||
|
||||
void LeftLadder::mousePressEvent(QMouseEvent *e)
|
||||
{
|
||||
qDebug() << "press" << e;
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
void LeftLadder::mouseDoubleClickEvent(QMouseEvent *e)
|
||||
{
|
||||
qDebug() << "double clicked" << e;
|
||||
update();
|
||||
}
|
||||
|
||||
void LeftLadder::wheelEvent(QWheelEvent *e)
|
||||
{
|
||||
qDebug() << "wheel event" << e;
|
||||
|
||||
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
|
||||
void LeftLadder::paintEvent(QPaintEvent *)
|
||||
{
|
||||
QPainter painter(this);
|
||||
painter.setRenderHint(QPainter::Antialiasing); /* 使用反锯齿(如果可用) */
|
||||
|
||||
//painter.translate(width() / 2, 2 * height() / 5); /* 坐标变换为窗体中心 */
|
||||
int side = qMin(width(), height()); /* 这一句决定了这个模块只能是方形 */
|
||||
painter.scale(side / 2000.0, side / 2000.0); /* 比例缩放 */
|
||||
painter.setPen(Qt::NoPen);
|
||||
|
||||
|
||||
drawLeftScale(&painter);
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
//画左刻度尺 用单独的控件最容易解决
|
||||
void LeftLadder::drawLeftScale(QPainter *painter)
|
||||
{
|
||||
painter->save();
|
||||
|
||||
//平移坐标
|
||||
painter->translate(-1100,0);
|
||||
|
||||
QPen ePen;
|
||||
QFont font;
|
||||
//画一个半透明的小方块
|
||||
painter->save();
|
||||
painter->setOpacity(0.3f);
|
||||
ePen.setColor(QColor("#7A7A7A"));
|
||||
painter->setBrush(QColor("#7A7A7A"));
|
||||
painter->drawRect(0,-600,300,1200);
|
||||
painter->restore();
|
||||
|
||||
//画最底下的黑色单位显示框
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#FFFFFF"));
|
||||
ePen.setWidth(10);
|
||||
|
||||
|
||||
font.setPixelSize(60);
|
||||
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
painter->setBrush(QColor("#000000"));
|
||||
painter->drawRect(0,600,300,100);
|
||||
|
||||
painter->drawText(QRect(20,600,280,100),Qt::AlignLeft|Qt::AlignVCenter,"TAS " + QString::number(airspeed));
|
||||
|
||||
painter->restore();
|
||||
|
||||
|
||||
//画旁边的速度刻度,并显示
|
||||
painter->save();
|
||||
|
||||
painter->translate(0,1200.0f/40.0f * airspeed);
|
||||
|
||||
float h = 1200.0f/40.0f;//单位高度
|
||||
|
||||
|
||||
for(int i = -19 - airspeed;i<=(19 - airspeed);i+=1)
|
||||
{
|
||||
|
||||
QString strText = QString::number(-i); //设置当前字体
|
||||
painter->save();
|
||||
|
||||
QPen ePen;
|
||||
QFont font;
|
||||
ePen.setColor(m_CentreLineColor);
|
||||
ePen.setWidth(10);
|
||||
font.setPointSize(60);
|
||||
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
|
||||
if((i%10) == 0)
|
||||
{
|
||||
//if((i * h > 100)||(i * h < -100))
|
||||
//{
|
||||
painter->drawLine( 220,i * h,290,i * h);
|
||||
painter->drawText(QRect(20,i * h - 30,190,60),Qt::AlignVCenter|Qt::AlignRight, strText);
|
||||
//}
|
||||
}
|
||||
else if((i%5) == 0)
|
||||
{
|
||||
painter->drawLine(240,i * h,290,i * h);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
painter->restore();
|
||||
|
||||
|
||||
//画旁边的速度彩条
|
||||
painter->save();
|
||||
|
||||
painter->setBrush(QColor("#FFC125"));
|
||||
painter->drawRect(275,-600,25,1200);
|
||||
painter->restore();
|
||||
|
||||
//画 中间黑色的显示块
|
||||
painter->save();
|
||||
|
||||
static const QPointF points1[11] = {
|
||||
QPointF( 0,-50),
|
||||
QPointF(200,-50),
|
||||
QPointF(200,-100),
|
||||
QPointF(275,-100),
|
||||
|
||||
QPointF(275,-25),
|
||||
QPointF(290, 0),
|
||||
QPointF(275, 25),
|
||||
|
||||
QPointF(275, 100),
|
||||
QPointF(200, 100),
|
||||
QPointF(200, 50),
|
||||
QPointF( 0, 50)
|
||||
};
|
||||
|
||||
painter->setBrush(QColor("#000000"));
|
||||
painter->drawPolygon(points1, 11);
|
||||
|
||||
|
||||
|
||||
ePen.setColor(m_CentreLineColor);
|
||||
ePen.setWidth(15);
|
||||
font.setPointSize(90);
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
QString DacadeText = QString::number(int(airspeed/10)); //设置十位以上
|
||||
QString UnitText = QString::number(qAbs(int(airspeed)%10)); //设置个位
|
||||
painter->drawText(QRect(0,-50,200,100),Qt::AlignVCenter|Qt::AlignRight, DacadeText);
|
||||
//painter->drawText(QRect(200,-50,100,100),Qt::AlignVCenter|Qt::AlignLeft, UnitText);
|
||||
|
||||
float Unit = airspeed - int(airspeed)/10 * 10;
|
||||
float Decimal = (airspeed - int(airspeed));
|
||||
|
||||
|
||||
qDebug() << Unit;
|
||||
for(int i = -2 - Unit;i<(2 - Unit);i+=1)
|
||||
{
|
||||
|
||||
QString strText = QString::number(((-i < 0)?(-i+10):((-i>=10)?(-i-10):(-i)))); //设置当前字体
|
||||
painter->save();
|
||||
|
||||
QPen ePen;
|
||||
QFont font;
|
||||
ePen.setColor(m_CentreLineColor);
|
||||
ePen.setWidth(15);
|
||||
font.setPointSize(90);
|
||||
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
painter->drawText(QRect(200,(i + Unit) * 100 - 50,100,90),Qt::AlignVCenter|Qt::AlignLeft, strText);
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
|
||||
painter->restore();
|
||||
|
||||
|
||||
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
#ifndef LEFTLADDER_H
|
||||
#define LEFTLADDER_H
|
||||
|
||||
#include <QObject>
|
||||
#include "QWidget"
|
||||
#include <QMouseEvent>
|
||||
#include "QDebug"
|
||||
|
||||
#include <QPainter>
|
||||
#include <QtCore/qmath.h>
|
||||
#include "QThread"
|
||||
#include "QDebug"
|
||||
#include "QPicture"
|
||||
|
||||
class LeftLadder: public QWidget
|
||||
{
|
||||
Q_OBJECT
|
||||
public:
|
||||
explicit LeftLadder(QWidget *parent = 0);
|
||||
|
||||
|
||||
public slots:
|
||||
void setAirSpeed(float speed);
|
||||
|
||||
|
||||
protected:
|
||||
|
||||
|
||||
void mouseReleaseEvent(QMouseEvent *e);
|
||||
void mousePressEvent(QMouseEvent *e);
|
||||
void mouseDoubleClickEvent(QMouseEvent *e);
|
||||
void wheelEvent(QWheelEvent *e);
|
||||
|
||||
void paintEvent(QPaintEvent *);
|
||||
|
||||
|
||||
void drawLeftScale(QPainter *painter);
|
||||
|
||||
|
||||
|
||||
private:
|
||||
|
||||
float airspeed;
|
||||
|
||||
|
||||
QColor m_CentreLineColor;
|
||||
|
||||
};
|
||||
|
||||
#endif // LEFTLADDER_H
|
||||
Reference in New Issue
Block a user