HMI-10-[Qt 布局]:仪表标题栏的实现

基于Qt的汽车仪表模拟

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

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

效果图如下

如上如所示,标题栏主要显示的信息就只有4个 ,模式。时间,温度和方向

 

布局就是图中的样子,剩下的就是一步一步的把这些接口的引出去,让我的控制台可以控制。

这里方向使用了宏定义

/*
 * 方向宏定义
 */
#define DIRECTION_N 0
#define DIRECTION_NE 1
#define DIRECTION_E 2
#define DIRECTION_SE 3
#define DIRECTION_S 4
#define DIRECTION_SW 5
#define DIRECTION_W 6
#define DIRECTION_NW 7

声明接口函数

/**
     * @brief setTime
     * @param time
     * 设置时间
     */
    void setTime(QString time = "00:00");
    /**
     * @brief setTemperature
     * @param temperature
     * 设置温度
     */
    void setTemperature(QString temperature = "-0°C");
    /**
     * @brief setDirection
     * @param direction
     * 设置方向
     */
    void setDirection(int direction = 0);

在构造函数中完成基本的美化和数据的初始化

Title::Title(QWidget *parent) :QWidget(parent),ui(new Ui::Title)
{
    ui->setupUi(this);
    ui->label_mainback->setStyleSheet("QLabel{border-image:url(:/Comfort/Resources/MeterDisplay/Comfort/title.png);}");
    ui->pushButton_direction->setStyleSheet("QPushButton{background: transparent;color: rgb(236, 228, 216);};QPushButton:hover{background: transparent;color: rgb(236, 228, 216);};QPushButton:predded{background: transparent;color: rgb(236, 228, 216);}");
    ui->label_model->setText("Comfort");
    setTime();
    setTemperature();
    setDirection(3);
}

完成对应功能实现

//设置时间
void Title::setTime(QString time)
{
    ui->label_time->setText(time);
}
//设置温度
void Title::setTemperature(QString temperature)
{
    ui->label_temperature->setText(temperature);
}
//设置方向
void Title::setDirection(int direction)
{
    QSize size(0,0);

    switch (direction) {
    case DIRECTION_N:
    {
        ui->pushButton_direction->setText("N");
        size.scale(18,34,Qt::IgnoreAspectRatio);
        ui->pushButton_direction->setIconSize(size);
        ui->pushButton_direction->setIcon(QIcon(":/Comfort/Resources/MeterDisplay/Comfort/TitleDirection/1.png"));
        break;
    }
    case DIRECTION_NE:
    {
        ui->pushButton_direction->setText("NE");
        size.scale(29,29,Qt::IgnoreAspectRatio);
        ui->pushButton_direction->setIconSize(size);
        ui->pushButton_direction->setIcon(QIcon(":/Comfort/Resources/MeterDisplay/Comfort/TitleDirection/2.png"));
        break;
    }
    case DIRECTION_E:
    {
        ui->pushButton_direction->setText("E");
        size.scale(31,20,Qt::IgnoreAspectRatio);
        ui->pushButton_direction->setIconSize(size);
        ui->pushButton_direction->setIcon(QIcon(":/Comfort/Resources/MeterDisplay/Comfort/TitleDirection/3.png"));
        break;
    }
    case DIRECTION_SE:
    {
        ui->pushButton_direction->setText("SE");
        size.scale(29,29,Qt::IgnoreAspectRatio);
        ui->pushButton_direction->setIconSize(size);
        ui->pushButton_direction->setIcon(QIcon(":/Comfort/Resources/MeterDisplay/Comfort/TitleDirection/4.png"));
        break;
    }
    case DIRECTION_S:
    {
        ui->pushButton_direction->setText("S");
        size.scale(18,35,Qt::IgnoreAspectRatio);
        ui->pushButton_direction->setIconSize(size);
        ui->pushButton_direction->setIcon(QIcon(":/Comfort/Resources/MeterDisplay/Comfort/TitleDirection/5.png"));
        break;
    }
    case DIRECTION_SW:
    {
        ui->pushButton_direction->setText("SW");
        size.scale(31,29,Qt::IgnoreAspectRatio);
        ui->pushButton_direction->setIconSize(size);
        ui->pushButton_direction->setIcon(QIcon(":/Comfort/Resources/MeterDisplay/Comfort/TitleDirection/6.png"));
        break;
    }
    case DIRECTION_W:
    {
        ui->pushButton_direction->setText("W");
        size.scale(31,19,Qt::IgnoreAspectRatio);
        ui->pushButton_direction->setIconSize(size);
        ui->pushButton_direction->setIcon(QIcon(":/Comfort/Resources/MeterDisplay/Comfort/TitleDirection/7.png"));
        break;
    }
    case DIRECTION_NW:
    {
        ui->pushButton_direction->setText("NW");
        size.scale(29,31,Qt::IgnoreAspectRatio);
        ui->pushButton_direction->setIconSize(size);
        ui->pushButton_direction->setIcon(QIcon(":/Comfort/Resources/MeterDisplay/Comfort/TitleDirection/8.png"));
        break;
    }
    default:
        break;
    }
}

2019/08/25 15:19

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

猜你喜欢

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