重新整理各个界面

This commit is contained in:
2020-01-09 16:53:52 +08:00
parent c7d6b9895a
commit dabe8c5617
+89 -111
View File
@@ -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)
{