HMI-11-[Qt 布局]:底部信息的实现

基于Qt的汽车仪表模拟

程序体验地址:https://pan.baidu.com/s/1rQFZx5JIud8lWdjMHl0tpg

目前版本还没有成功把字体打包的程序中,为了更好的效果体验,请先安装文件中的两个字体

效果图如下

在下方的显示信息主要要左侧的显示信息,中间的档位信息和右侧的总公里数。剩下的信息可以在后面丰富

目前显示内容极少,实现简单

对外接口

/**
     * @brief setGear
     * @param gear
     * 设置档位
     */
    void setGear(gearState gear);
    /**
     * @brief setLim
     * @param lim
     * 设置限速信息
     */
    void setLim(int lim = 0);
    /**
     * @brief setMileage
     * @param mileage
     * 设置总里程数
     */
    void setMileage(int mileage = 0);

这里档位信息放在了单独一个控件里面了,为的是后面还有可能用到。

BottomDisplay::BottomDisplay(QWidget *parent) : QWidget(parent),ui(new Ui::BottomDisplay)
{
    ui->setupUi(this);
    m_gear = new Gear(this);
    m_gear->setGeometry(409,8,82,82);
    setLim();
    setMileage();
}

BottomDisplay::~BottomDisplay()
{
    delete ui;
}

void BottomDisplay::setGear(gearState gear)
{
    if(m_gear)
    {
        m_gear->setGear(gear);
    }
}

void BottomDisplay::setLim(int lim)
{
    ui->label_lim->setText(QString::number(lim,10)+" km");
}

void BottomDisplay::setMileage(int mileage)
{
    ui->label_odo->setText(QString::number(mileage,10)+" km");
}

完成接口的功能

剩下需要看下档位信息的实现部分

表示档位信息的,用了一个枚举日下

enum gearState{
    m_gearP,
    m_gearR,
    m_gearN,
    m_gearD1,
    m_gearD2,
    m_gearD3,
    m_gearD4,
    m_gearD5,
    m_gearD6,
    m_gearD7,
    m_gearD8,
    m_gearM1,
    m_gearM2,
    m_gearM3,
    m_gearM4,
    m_gearM5,
    m_gearM6,
    m_gearM7,
    m_gearM8
};

档位信息对外的接口

/**
     * @brief setGear
     * @param gear
     * 设置档位
     */
    void setGear(gearState gear = m_gearP);

实现部分,毫无技术含量

void Gear::setGear(gearState gear)
{
    switch (gear) {
    case m_gearP:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/P.png);}");
        break;
    case m_gearR:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/R.png);}");
        break;
    case m_gearN:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/N.png);}");
        break;
    case m_gearD1:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/D1.png);}");
        break;
    case m_gearD2:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/D2.png);}");
        break;
    case m_gearD3:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/D3.png);}");
        break;
    case m_gearD4:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/D4.png);}");
        break;
    case m_gearD5:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/D5.png);}");
        break;
    case m_gearD6:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/D6.png);}");
        break;
    case m_gearD7:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/D7.png);}");
        break;
    case m_gearD8:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/D8.png);}");
        break;
    case m_gearM1:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/M1.png);}");
        break;
    case m_gearM2:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/M2.png);}");
        break;
    case m_gearM3:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/M3.png);}");
        break;
    case m_gearM4:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/M4.png);}");
        break;
    case m_gearM5:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/M5.png);}");
        break;
    case m_gearM6:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/M6.png);}");
        break;
    case m_gearM7:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/M7.png);}");
        break;
    case m_gearM8:
        ui->label_gear->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/Gears/M8.png);}");
        break;
    default:
        break;
    }
}

 2019/08/25 15:39

发布了259 篇原创文章 · 获赞 535 · 访问量 54万+

猜你喜欢

转载自blog.csdn.net/z609932088/article/details/101362055
今日推荐