简单的车载系统

本文介绍了如何使用C++和QT构建一个简单的车载系统,包括主界面设计、天气查询功能(通过API获取数据并显示)、视频播放(初始化、控制功能等)以及音乐播放(显示歌词、切换歌曲等功能)。所有多媒体播放部分均借助mplayer工具实现。
摘要由CSDN通过智能技术生成

简单的车载系统界面

实现车载系统界面简单的天气查询,视频、音频播放功能。


一、主界面

UI界面设置
在UI中自行构建主界面,设置按钮跳转到相应的功能区。

二、天气系统

1.信号绑定获取API

代码如下(示例):

client = new QTcpSocket(this);

//连接到服务器
client->connectToHost(QHostAddress("1.81.5.176"), 80);

//可读信号绑定
connect(client, &QTcpSocket::readyRead, this, &weather::show_data);

//获取API天气情况 不同的天气情况可以改城市IP就行
QString str = QString("GET /api/weather/city/101030100 HTTP/1.1\r\nHost:t.weather.itboy.net\r\n\r\n");
client->write(str.toUtf8());

2.获取API数据

代码如下(示例):

//判断是否接受完毕 (QjSONS数据不能一次发送过来 判断接受完才切割)
bool weather::judge(const QByteArray &arr)
{
   
    int llen = 0;
    int left = 0;
    while (1) {
   
        llen = arr.indexOf('{', llen + 1);
        if (llen != -1)
            left++;
        else
            break;
        qDebug() << llen;
    }

    int rlen = 0;
    int right = 0;
    while (1) {
   
        rlen = arr.indexOf('}', rlen + 1);
        if (rlen != -1)
            right++;
        else
            break;
         qDebug() << llen;
    }

    if (left == right)
        return true;
    else
        return false;
}

获取完数据后处理数据并且显示到界面中。

//获取回文,并处理
void weather::show_data()
{
   
    //读取全部信息并拷贝一份,避免误操作原始数据导致丢失
     //str = client->readAll();
        array += client->readAll();
    if (!judge(array))
        return;
    //qDebug()<<array;
    //去头
    QByteArray sub = array.mid(array.indexOf('{'), array.lastIndexOf('}')
                               - array.indexOf('{') + 1);
    array.clear();


    QJsonParseError err;
    QJsonDocument doc = QJsonDocument::fromJson(sub, &err);
    if (err.error != QJsonParseError::NoError)
    {
   
        qDebug() << "onReadRead::doc parse is faild.";
        return;
    }

    if (doc.object().take("status").toInt() != 200)
    {
   
        qDebug() << "获取天气信息失败";
        return;
    }



    //构造一个QPixmap对象,使用图片路径 显示对应图片
    //QPixmap pix("D:/Qt_pro/Qt_day04/3.png");
        QPixmap pix("qing.png");
        QPixmap pix1("yin.png");
        QPixmap pix2("xiaoyu.png");//霾
        QPixmap pix3("duoyun.png");


    //获取地点名字
     QJsonObject cityInfo = doc.object().take("cityInfo").toObject();

     QString city =cityInfo.value("city").toString()+"\n";//地点名字
             //city +=cityInfo.value("updateTime").toString();//时间
     ui->label->setText(city);

     QJsonObject data = doc.object().take("data").toObject();
     QString situ = data.value("ganmao").toString();
     ui->label_6->setText(situ);

        QJsonObject yesterday = data.value("yesterday").toObject();
        {
   

             //昨天日期
            QString  str1 = yesterday.value("ymd").toString()+ "\n";
             str1.remove(0,5);

            str1 += yesterday.value("week").toString();
             ui->yes->setText(str1);
            //天气情况
             QString  type;
                QString weather;
             type += yesterday.value("type").toString();
             weather = type;

             qDebug()<<weather;//天气类型

             type += "\n"+yesterday.value("high").toString()+ "\n";
              type += yesterday.value("low").toString()+ "\n";
              type += yesterday.value("fx").toString()+ "\n";
              type += yesterday.value("fl").toString()+ "\n";
                ui->label_5->setText(type);



             //设置图片
            // QPixmap pic;
             int c;
             if((c = QString::compare(weather, "晴" ))==0)
            {
   
                 //调整QPixmap大小和lab一致
             pix = pix.scaled(ui->label_4->size());
             //使用lab显示图片
             ui->label_4->setPixmap(pix);
             }

              else  if((c = QString::compare(weather, "阴" ))==0)
                  {
   
                    pix1 = pix1.scaled(ui->label_4->size());
                    ui->label_4->setPixmap(pix);
                    }
                     else if((c = QString::compare(weather, "霾" ))==0)
                        {
   

                            pix2 = pix2.scaled(ui->label_4->size());

                             ui->label_4->setPixmap(pix2);

                            }
                           else if((c = QString::compare(weather, "多云" ))==0)
                              {
   
                                    pix3 = pix3.scaled(ui->label_4->size());
                                    ui->label_4->setPixmap(pix3);
                                     qDebug()<<pix3;
                                  }


    }


    //1-5天
    QJsonArray forecast = data.value("forecast").toArray();

    //今日日期1
    QString  str1 = forecast.at(0).toObject().value("ymd").toString()+ "\n";
    str1.remove(0,5);
    str1 += forecast.at(0).toObject().value("week").toString();
    ui->yes1->setText(str1);
    //今日温度显示
    QString temp
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值