重新整理各个界面
This commit is contained in:
+89
-111
@@ -230,6 +230,11 @@ void Cockpit::paintEvent(QPaintEvent *)
|
||||
painter.scale(side / 2000.0, side / 2000.0); /* 比例缩放 */
|
||||
painter.setPen(Qt::NoPen);
|
||||
|
||||
//全局设置字体
|
||||
QFont font;
|
||||
font.setWeight(QFont::ExtraLight);
|
||||
font.setFamily("Arial");//非衬线
|
||||
painter.setFont(font);
|
||||
|
||||
setPalette(QPalette(Qt::black)); //设置背景颜色
|
||||
setAutoFillBackground(true);//设置自动填充背景色
|
||||
@@ -276,13 +281,13 @@ void Cockpit::drawLed(QPainter *painter)
|
||||
}
|
||||
|
||||
//使用translate对一幅大图进行平移/旋转变换
|
||||
//画姿态roll pitch
|
||||
//画姿态pitch
|
||||
void Cockpit::drawPitch(QPainter *painter)
|
||||
{
|
||||
//画俯仰
|
||||
QRectF bluerect(-4000,-4000,8000,4000);
|
||||
QRectF yellowrect(-4000,0,8000,4000);
|
||||
//QRectF whiterect(-4000,-8,8000,16);
|
||||
QRectF whiterect(-4000,-5,8000,10);
|
||||
|
||||
painter->save();
|
||||
painter->translate(0,m_Attitude.pitch/45.0f * 1000);
|
||||
@@ -292,28 +297,23 @@ void Cockpit::drawPitch(QPainter *painter)
|
||||
painter->setBrush(m_GroundColor);
|
||||
painter->drawRect(yellowrect);
|
||||
painter->setBrush(QColor("#FFFFFF"));
|
||||
//painter->drawRect(whiterect)
|
||||
painter->drawRect(whiterect);
|
||||
|
||||
//俯仰刻度表
|
||||
|
||||
|
||||
|
||||
float h = 1000.0f/45.0f;//单位高度
|
||||
|
||||
|
||||
for(int i = -20 - m_Attitude.pitch;i<=(15 - m_Attitude.pitch);i+=1)
|
||||
for(int i = -15 - m_Attitude.pitch;i<=(15 - m_Attitude.pitch);i+=1)
|
||||
{
|
||||
|
||||
QString strText = QString::number(qAbs(i)); //设置当前字体
|
||||
painter->save();
|
||||
|
||||
QPen ePen;
|
||||
ePen.setColor(m_CentreLineColor);
|
||||
ePen.setWidth(10);
|
||||
QFont font;
|
||||
font.setPointSize(60);
|
||||
|
||||
font.setWeight(QFont::ExtraLight);
|
||||
ePen.setColor(m_CentreLineColor);
|
||||
ePen.setWidth(8);
|
||||
font.setPointSize(50);
|
||||
//font.setWeight(QFont::ExtraLight);
|
||||
font.setFamily("Arial");//非衬线
|
||||
|
||||
painter->setPen(ePen);
|
||||
@@ -321,17 +321,16 @@ void Cockpit::drawPitch(QPainter *painter)
|
||||
|
||||
if((i%10) == 0)
|
||||
{
|
||||
painter->drawLine(-290,i * h,290,i * h);
|
||||
painter->drawText(QRect(-530,i * h - 40,230,80),Qt::AlignVCenter | Qt::AlignRight, strText);//减去字体的一半
|
||||
painter->drawText(QRect( 300,i * h - 40,240,80),Qt::AlignVCenter | Qt::AlignLeft, strText);
|
||||
if( i != 0)//0处不显示
|
||||
{
|
||||
painter->drawLine(-150,i * h,150,i * h);
|
||||
painter->drawText(QRect(-270,i * h - 40,2 * font.pointSize(),80),Qt::AlignVCenter | Qt::AlignRight, strText);//减去字体的一半
|
||||
painter->drawText(QRect( 160,i * h - 40,2 * font.pointSize(),80),Qt::AlignVCenter | Qt::AlignLeft, strText);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
else if((i%5) == 0)
|
||||
{
|
||||
//painter->drawLine(-50,(i - 2.5f)*h,50,(i - 2.5f)*h);
|
||||
painter->drawLine(-150,i * h,150,i * h);
|
||||
//painter->drawLine(-50,(i + 2.5f)*h,50,(i + 2.5f)*h);
|
||||
painter->drawLine(-70,i * h,70,i * h);
|
||||
}
|
||||
|
||||
|
||||
@@ -339,11 +338,9 @@ void Cockpit::drawPitch(QPainter *painter)
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
|
||||
|
||||
painter->restore();
|
||||
|
||||
|
||||
//画黑色背景
|
||||
painter->save();
|
||||
QPainterPath path;
|
||||
@@ -353,7 +350,7 @@ void Cockpit::drawPitch(QPainter *painter)
|
||||
path.lineTo( 4000, 4000);
|
||||
path.lineTo(-4000, 4000);
|
||||
//画里面边框
|
||||
path.addRoundRect(-600,-600,1200,1200,10,10);
|
||||
path.addRoundRect(-500,-500,1000,1000,20,20);
|
||||
|
||||
//按照规则填充两个边框之间的部分
|
||||
path.setFillRule(Qt::OddEvenFill);
|
||||
@@ -365,19 +362,14 @@ void Cockpit::drawPitch(QPainter *painter)
|
||||
|
||||
|
||||
}
|
||||
|
||||
//画姿态roll
|
||||
void Cockpit::drawRoll(QPainter *painter)
|
||||
{
|
||||
//画俯仰和滚转
|
||||
|
||||
painter->save();
|
||||
painter->rotate(m_Attitude.roll);
|
||||
|
||||
//画绿色W和顶部滚转
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
static const QPointF W_Line[7] = {
|
||||
QPointF(-300, 0),
|
||||
QPointF(-100, 0),
|
||||
@@ -393,46 +385,40 @@ void Cockpit::drawRoll(QPainter *painter)
|
||||
pen.setColor(m_WColor);
|
||||
painter->setPen(pen);
|
||||
painter->drawPolyline(W_Line,7);
|
||||
//画白色小三角形
|
||||
static const QPointF points2[3] = {
|
||||
QPointF(-30,-500),
|
||||
QPointF(0,-450),
|
||||
QPointF(30,-500)
|
||||
};
|
||||
|
||||
pen.setWidth(1);
|
||||
pen.setColor(m_CurrentColor);
|
||||
painter->setPen(pen);
|
||||
painter->setBrush(m_CurrentColor);
|
||||
painter->drawPolygon(points2,3);
|
||||
|
||||
if((m_Attitude.roll >= -60)&&(m_Attitude.roll <= 60))
|
||||
{
|
||||
|
||||
|
||||
//画紫色小三角形
|
||||
static const QPointF points1[3] = {
|
||||
QPointF(-30,-630),
|
||||
QPointF(0,-690),
|
||||
QPointF(30,-630)
|
||||
};
|
||||
|
||||
pen.setWidth(1);
|
||||
pen.setColor(m_TargetColor);
|
||||
painter->setPen(pen);
|
||||
painter->setBrush(m_TargetColor);
|
||||
painter->drawPolygon(points1,3);
|
||||
|
||||
|
||||
//画白色小三角形
|
||||
static const QPointF points2[3] = {
|
||||
QPointF(-30,-770),
|
||||
QPointF(0,-710),
|
||||
QPointF(30,-770)
|
||||
};
|
||||
|
||||
pen.setWidth(1);
|
||||
pen.setColor(m_CurrentColor);
|
||||
painter->setPen(pen);
|
||||
painter->setBrush(m_CurrentColor);
|
||||
painter->drawPolygon(points2,3);
|
||||
|
||||
}
|
||||
|
||||
painter->restore();
|
||||
|
||||
|
||||
//画俯仰和滚转
|
||||
painter->save();
|
||||
painter->rotate(m_Target.roll);
|
||||
//画紫色小三角形
|
||||
static const QPointF points1[3] = {
|
||||
QPointF(-30,-410),
|
||||
QPointF(0,-450),
|
||||
QPointF(30,-410)
|
||||
};
|
||||
|
||||
pen.setWidth(1);
|
||||
pen.setColor(m_TargetColor);
|
||||
painter->setPen(pen);
|
||||
painter->setBrush(m_TargetColor);
|
||||
painter->drawPolygon(points1,3);
|
||||
|
||||
painter->restore();
|
||||
}
|
||||
|
||||
void Cockpit::drawRollScale(QPainter *painter)
|
||||
@@ -447,25 +433,25 @@ void Cockpit::drawRollScale(QPainter *painter)
|
||||
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
painter->drawArc(-700,-700,1400,1400,30*16,120*16);
|
||||
painter->drawArc(-450,-450,900,900,30*16,120*16);
|
||||
|
||||
//中间 两块黑块
|
||||
|
||||
static const QPointF points1[6] = {
|
||||
QPointF(-700, 0),
|
||||
QPointF(-400, 0),
|
||||
QPointF(-400, 100),
|
||||
QPointF(-450, 100),
|
||||
QPointF(-450, 50),
|
||||
QPointF(-700, 50)
|
||||
QPointF(-475, 0),
|
||||
QPointF(-275, 0),
|
||||
QPointF(-275, 50),
|
||||
QPointF(-300, 50),
|
||||
QPointF(-300, 25),
|
||||
QPointF(-475, 25)
|
||||
};
|
||||
static const QPointF points2[6] = {
|
||||
QPointF(700, 0),
|
||||
QPointF(400, 0),
|
||||
QPointF(400, 100),
|
||||
QPointF(450, 100),
|
||||
QPointF(450, 50),
|
||||
QPointF(700, 50)
|
||||
QPointF(475, 0),
|
||||
QPointF(275, 0),
|
||||
QPointF(275, 50),
|
||||
QPointF(300, 50),
|
||||
QPointF(300, 25),
|
||||
QPointF(475, 25)
|
||||
};
|
||||
|
||||
painter->setBrush(QColor("#000000"));
|
||||
@@ -483,9 +469,9 @@ void Cockpit::drawRollScale(QPainter *painter)
|
||||
painter->translate(0,0);
|
||||
painter->rotate(-i);
|
||||
if((i%20) == 0)
|
||||
painter->drawLine(0,-700,0,-740);
|
||||
painter->drawLine(0,-450,0,-490);
|
||||
else
|
||||
painter->drawLine(0,-700,0,-720);
|
||||
painter->drawLine(0,-450,0,-470);
|
||||
//painter->drawText(-30,-750, strText);
|
||||
painter->restore();
|
||||
}
|
||||
@@ -623,15 +609,13 @@ void Cockpit::drawYawScale(QPainter *painter)
|
||||
}
|
||||
|
||||
|
||||
//画左刻度尺 用单独的控件最容易解决
|
||||
void Cockpit::drawLeftScale(QPainter *painter)
|
||||
{
|
||||
//leftladder->setGeometry(0,-600,300,1200);
|
||||
|
||||
painter->save();
|
||||
|
||||
//平移坐标
|
||||
painter->translate(-1100,0);
|
||||
painter->translate(-900,0);
|
||||
|
||||
QPen ePen;
|
||||
QFont font;
|
||||
@@ -646,8 +630,7 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
//画最底下的黑色单位显示框
|
||||
painter->save();
|
||||
ePen.setColor(QColor("#FFFFFF"));
|
||||
ePen.setWidth(10);
|
||||
|
||||
ePen.setWidth(8);
|
||||
|
||||
font.setPixelSize(60);
|
||||
|
||||
@@ -668,7 +651,6 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
|
||||
float h = 1200.0f/40.0f;//单位高度
|
||||
|
||||
|
||||
for(int i = -19 - m_Attitude.airspeed;i<=(19 - m_Attitude.airspeed);i+=1)
|
||||
{
|
||||
|
||||
@@ -678,25 +660,27 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
QPen ePen;
|
||||
QFont font;
|
||||
ePen.setColor(m_CentreLineColor);
|
||||
ePen.setWidth(10);
|
||||
ePen.setWidth(8);
|
||||
font.setPointSize(60);
|
||||
font.setWeight(QFont::ExtraLight);
|
||||
font.setFamily("Arial");//非衬线
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
|
||||
if((i%10) == 0)
|
||||
{
|
||||
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)
|
||||
if(i < 0)//小于0的刻度不显示
|
||||
{
|
||||
painter->drawLine(240,i * h,290,i * h);
|
||||
|
||||
if((i%10) == 0)
|
||||
{
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -826,26 +810,21 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
//画速度目标值(紫色小箭头)
|
||||
painter->save();
|
||||
|
||||
painter->translate(275,-1200.0f/40.0f * (m_Target.airspeed- m_Attitude.airspeed));//设置原点
|
||||
painter->translate(260,-1200.0f/40.0f * (m_Target.airspeed- m_Attitude.airspeed));//设置原点
|
||||
|
||||
ePen.setColor(m_TargetColor);
|
||||
ePen.setWidth(10);
|
||||
font.setFamily("Arial");//非衬线
|
||||
|
||||
ePen.setWidth(8);
|
||||
painter->setPen(ePen);
|
||||
painter->setFont(font);
|
||||
|
||||
static const QPointF ASTargetpoints2[7] = {
|
||||
QPointF(30, 0),
|
||||
QPointF(10, -30),
|
||||
QPointF(10, -45),
|
||||
QPointF(60,-45),
|
||||
QPointF(60, 45),
|
||||
QPointF(10, 45),
|
||||
QPointF(10, 30)
|
||||
static const QPointF ASTargetpoints2[5] = {
|
||||
QPointF(0, 0),
|
||||
QPointF(40, -30),
|
||||
QPointF(120, -30),
|
||||
QPointF(120, 30),
|
||||
QPointF(40, 30)
|
||||
};
|
||||
|
||||
painter->drawPolygon(ASTargetpoints2, 7);
|
||||
painter->drawPolygon(ASTargetpoints2, 5);
|
||||
|
||||
painter->restore();
|
||||
|
||||
@@ -860,7 +839,6 @@ void Cockpit::drawLeftScale(QPainter *painter)
|
||||
}
|
||||
|
||||
|
||||
//画左刻度尺 用单独的控件最容易解决
|
||||
void Cockpit::drawRightScale(QPainter *painter)
|
||||
{
|
||||
|
||||
|
||||
Reference in New Issue
Block a user