首页 > 系统相关 >Linux MQTT智能家居(温度,湿度,环境监测,摄像头等界面布局设置)

Linux MQTT智能家居(温度,湿度,环境监测,摄像头等界面布局设置)

时间:2023-08-13 14:31:31浏览次数:42  
标签:智能家居 MQTT Camera ui Linux new include TempHumtiy Illumination

(文章目录)


前言

本篇文章来完成另外三个界面的布局设置。

这里会使用到 feiyangqingyun的一些控件库。

一、温度湿度曲线布局

TempHumtiy.h:

#ifndef TEMPHUMTIY_H
#define TEMPHUMTIY_H

#include <QWidget>
#include "wavechart.h"

namespace Ui {
class TempHumtiy;
}

class TempHumtiy : public QWidget
{
    Q_OBJECT

    WaveChart* TempWave;//温度曲线
    WaveChart* HumityWave;//湿度曲线

public:
    explicit TempHumtiy(QWidget *parent = nullptr);
    ~TempHumtiy();

private:
    Ui::TempHumtiy *ui;
};

#endif // TEMPHUMTIY_H

TempHumtiy.cpp:

#include "TempHumtiy.h"
#include "ui_TempHumtiy.h"
#include <QVBoxLayout>

TempHumtiy::TempHumtiy(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::TempHumtiy)
{
    ui->setupUi(this);

    QVBoxLayout* vlaout = new QVBoxLayout(this);

    //温度曲线
    TempWave = new WaveChart();
    TempWave->setTitle("温度曲线");

    //湿度曲线
    HumityWave = new WaveChart();
    HumityWave->setTitle("温度曲线");

    vlaout->addWidget(TempWave);
    vlaout->addWidget(HumityWave);
}

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

运行效果: 在这里插入图片描述

二、环境监测界面布局

Illumination.h:

#include "Illumination.h"
#include "ui_Illumination.h"
#include <QHBoxLayout>
#include <QLabel>
#include <QFont>
#include <QPalette>

Illumination::Illumination(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Illumination)
{
    ui->setupUi(this);

    QFont font("Arial", 20);
    QPalette palette;
    palette.setColor(QPalette::WindowText, Qt::white);

    QLabel* label1 = new QLabel("烟雾浓度");
    label1->setFont(font);
    label1->setPalette(palette);
    label1->setAlignment(Qt::AlignCenter);


    QLabel* label2 = new QLabel("光照强度");
    label2->setFont(font);
    label2->setPalette(palette);
    label2->setAlignment(Qt::AlignCenter);


    QLabel* label3 = new QLabel("Co2浓度");
    label3->setFont(font);
    label3->setPalette(palette);
    label3->setAlignment(Qt::AlignCenter);


    QHBoxLayout* hlayout = new QHBoxLayout();
    QHBoxLayout* hlayout1 = new QHBoxLayout();
    QVBoxLayout* vlayout = new QVBoxLayout(this);

    hlayout1->addWidget(label1);
    hlayout1->addWidget(label2);
    hlayout1->addWidget(label3);

    /* 烟雾浓度 */
    Smoke = new ProgressPercent();
    Smoke->setValue(20);
    Smoke->setUsedColor(QColor(255, 127, 39));
    Smoke->setPercentStyle(ProgressPercent::PercentStyle_Arc_Wave);


    /* 光照强度 */
    IllCent = new ProgressPercent();
    IllCent->setValue(15);
    IllCent->setUsedColor(QColor(237, 201, 14));
    IllCent->setPercentStyle(ProgressPercent::PercentStyle_Arc_Wave);

    /* Co2 */
    Co2 = new ProgressPercent();
    Co2->setValue(25);
    Co2->setUsedColor(QColor(237, 28, 36));
    Co2->setPercentStyle(ProgressPercent::PercentStyle_Arc_Wave);

    hlayout->addWidget(Smoke);
    hlayout->addWidget(IllCent);
    hlayout->addWidget(Co2);

    vlayout->addStretch();
    vlayout->addLayout(hlayout);
    vlayout->addLayout(hlayout1);
    vlayout->addStretch();
}

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

Illumination.cpp:

#include "Illumination.h"
#include "ui_Illumination.h"
#include <QHBoxLayout>
#include <QLabel>
#include <QFont>
#include <QPalette>

Illumination::Illumination(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Illumination)
{
    ui->setupUi(this);

    QFont font("Arial", 20);
    QPalette palette;
    palette.setColor(QPalette::WindowText, Qt::white);

    QLabel* label1 = new QLabel("烟雾浓度");
    label1->setFont(font);
    label1->setPalette(palette);
    label1->setAlignment(Qt::AlignCenter);


    QLabel* label2 = new QLabel("光照强度");
    label2->setFont(font);
    label2->setPalette(palette);
    label2->setAlignment(Qt::AlignCenter);


    QLabel* label3 = new QLabel("Co2浓度");
    label3->setFont(font);
    label3->setPalette(palette);
    label3->setAlignment(Qt::AlignCenter);


    QHBoxLayout* hlayout = new QHBoxLayout();
    QHBoxLayout* hlayout1 = new QHBoxLayout();
    QVBoxLayout* vlayout = new QVBoxLayout(this);

    hlayout1->addWidget(label1);
    hlayout1->addWidget(label2);
    hlayout1->addWidget(label3);

    /* 烟雾浓度 */
    Smoke = new ProgressPercent();
    Smoke->setValue(20);
    Smoke->setUsedColor(QColor(255, 127, 39));
    Smoke->setPercentStyle(ProgressPercent::PercentStyle_Arc_Wave);


    /* 光照强度 */
    IllCent = new ProgressPercent();
    IllCent->setValue(15);
    IllCent->setUsedColor(QColor(237, 201, 14));
    IllCent->setPercentStyle(ProgressPercent::PercentStyle_Arc_Wave);

    /* Co2 */
    Co2 = new ProgressPercent();
    Co2->setValue(25);
    Co2->setUsedColor(QColor(237, 28, 36));
    Co2->setPercentStyle(ProgressPercent::PercentStyle_Arc_Wave);

    hlayout->addWidget(Smoke);
    hlayout->addWidget(IllCent);
    hlayout->addWidget(Co2);

    vlayout->addStretch();
    vlayout->addLayout(hlayout);
    vlayout->addLayout(hlayout1);
    vlayout->addStretch();
}

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

运行效果: 在这里插入图片描述

三、摄像头界面布局

将QWidget提升为QVideoWidget,这个界面用于显示摄像头的图形。 在这里插入图片描述 Camera.h:

#ifndef CAMERA_H
#define CAMERA_H

#include <QWidget>
#include <QCamera>
#include <QVideoWidget>
#include <QMediaCaptureSession>
#include <QMediaDevices>

namespace Ui {
class Camera;
}

class Camera : public QWidget
{
    Q_OBJECT

    // 设置摄像机
    QCamera* camera;
    // 媒体会话
    QMediaCaptureSession* captureSession;

public:
    explicit Camera(QWidget *parent = nullptr);
    ~Camera();

private:
    Ui::Camera *ui;
};

#endif // CAMERA_H

Camera.cpp:

#include "Camera.h"
#include "ui_Camera.h"

Camera::Camera(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Camera)
{
    ui->setupUi(this);

    // 默认的视频输入设备
    QCameraDevice defaultVideoInput = QMediaDevices::defaultVideoInput();
    // 设置摄像机
    camera = new QCamera(QMediaDevices::defaultVideoInput());
    // 媒体会话
    captureSession = new QMediaCaptureSession();

    captureSession->setCamera(camera);
    captureSession->setVideoOutput(ui->widget);

    camera->start();

}

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

运行效果: 在这里插入图片描述

总结

本篇文章就讲解到这里。

标签:智能家居,MQTT,Camera,ui,Linux,new,include,TempHumtiy,Illumination
From: https://blog.51cto.com/u_16153875/7067124

相关文章

  • 使用Linux路由功能
    使用Linux路由功能1、开启Linux主机路由配置功能永久开启,更改配置文件vim/etc/sysctl.confnet.ipv4.ip_forward=1默认值为0[root@ketang-test~]#sysctl-p令修改立刻生效临时开启:echo1>/proc/sys/net/ipv4/ip_forward2、临时添加路由条目使用route命令添加的路由,机器......
  • Linux下C语言调用libcurl库获取天气预报信息
    一、概述当前文章介绍如何在Linux(Ubuntu)下使用C语言调用libcurl库获取天气预报的方法。通过HTTPGET请求访问百度天气API,并解析返回的JSON数据,可以获取指定城市未来7天的天气预报信息。二、设计思路【1】使用libcurl库进行HTTPGET请求在代码中包含<curl/curl.h>头文件,以便使用libc......
  • Linux下Shell脚本中比较大小
    数字比较-eq等于,如:if["$a"-eq"$b"]-ne不等于,如:if["$a"-ne"$b"]-gt大于,如:if["$a"-gt"$b"]-ge大于等于,如:if["$a"-ge"$b"]-lt小于,如:if["$a"-lt"$b......
  • 活字格-Linux部署
    活字格-Linux部署什么是活字格?活字格是一个企业级低代码开发平台,旨在显著提升企业或者软件公司应用系统的开发效率,同时提供前所未有的灵活性和扩展性,开发人员可以使用涵盖整个开发生命周期的集成开发环境(活字格设计器,服务管理器)进行开发、质量检测、部署、监控和管理。什么需......
  • Linux常见面试题,应对面试分享
    操作系统基础1.cpu占⽤率太⾼了怎么办?排查思路是什么,怎么定位这个问题,处理流程其他程序:1.通过top命令按照CPU使⽤率排序找出占⽤资源最⾼的进程2.lsof查看这个进程在使⽤什么⽂件或者有哪些线程3.询问开发或者⽼⼤,是什么业务在使⽤这个进程4.是否可以将这台机器隔离,不影响......
  • Linux上安装Qt Creator
    在Linux系统上安装QtCreator1.在qt官网下载安装包:qt-opensource-linux-x64-5.12.9.run2.wgethttps:://download.qt.io/archive/qt/5.12/5.12.9/qt-opensource-linux-x64-5.12.9.run3.赋予可执行权限,加上sudo权限进入安装,这样会安装在/opt目录下chmod+xqt-opensource-linux-......
  • windws系统上,vscode中怎么把gin项目生产linux可执行文件
    在Windows系统上,您可以通过以下步骤在VSCode中将Gin项目生成Linux可执行文件:1.确保您已经安装了Golang和VSCode。2.打开VSCode并导入您的Gin项目。3.在终端中导航到项目的根目录。4.运行以下命令以生成Linux可执行文件:SETGOOS=linuxSETGOARCH=amd64gobuild-......
  • 设置 X11 转发以在 Linux 中访问 GUI
    一、概述X11转发是一种在客户端和服务器之间传输图形界面的协议。它允许远程客户端在本地显示远程服务器上的图形应用程序,使用户可以在本地操作远程服务器上的图形界面。使用场景:远程服务器管理:管理员可以通过X11转发在本地管理远程服务器上的图形化工具和应用程序,而无需直接......
  • Linux 上的 DB2 11.1 GUI 安装
    概述 在这篇文章中,我们将介绍在Linux上安装DB211.1的步骤。在安装任何DB2LUW产品之前,您应该确保您的系统满足操作系统、硬件、软件、存储和内存要求。 注:以下步骤也适用于Linux上的DB211.5安装。解决方案第1步:检查以下链接以了解最新的安装要求 https://......
  • Linux
    Linux我们这个课程基于CentOS7版本的学习。入门概述我们为什么要学习Linuxlinux诞生了这么多年,以前还喊着如何能取代windows系统,现在这个口号已经小多了,任何事物发展都有其局限性都有其天花板。就如同在国内再搞一个社交软件取代腾讯一样,想想而已基本不可能,因为用户已经习惯......