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

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

前言

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

这里会使用到 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;
}

运行效果:

总结

本篇文章就讲解到这里。


相关实践学习
消息队列RocketMQ版:基础消息收发功能体验
本实验场景介绍消息队列RocketMQ版的基础消息收发功能,涵盖实例创建、Topic、Group资源创建以及消息收发体验等基础功能模块。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
7天前
|
监控 Oracle 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第8天】在 Linux 平台设置 Oracle 开机自启动有多种方法,本文以 CentOS 为例,介绍了两种常见方法:使用 `rc.local` 文件(较简单但不推荐用于生产环境)和使用 `systemd` 服务(推荐)。具体步骤包括编写启动脚本、赋予执行权限、配置 `rc.local` 或创建 `systemd` 服务单元文件,并设置开机自启动。通过 `systemd` 方式可以更好地与系统启动过程集成,更规范和可靠。
|
22天前
|
Web App开发 搜索推荐 Unix
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
【10月更文挑战第21天】Linux系统之MobaXterm远程连接centos的GNOME桌面环境
182 4
Linux系统之MobaXterm远程连接centos的GNOME桌面环境
|
8天前
|
关系型数据库 MySQL Linux
Linux环境下MySQL数据库自动定时备份实践
数据库备份是确保数据安全的重要措施。在Linux环境下,实现MySQL数据库的自动定时备份可以通过多种方式完成。本文将介绍如何使用`cron`定时任务和`mysqldump`工具来实现MySQL数据库的每日自动备份。
26 3
|
8天前
|
监控 关系型数据库 MySQL
Linux环境下MySQL数据库自动定时备份策略
在Linux环境下,MySQL数据库的自动定时备份是确保数据安全和可靠性的重要措施。通过设置定时任务,我们可以每天自动执行数据库备份,从而减少人为错误和提高数据恢复的效率。本文将详细介绍如何在Linux下实现MySQL数据库的自动定时备份。
22 3
|
8天前
|
Oracle Ubuntu 关系型数据库
Linux平台Oracle开机自启动设置
【11月更文挑战第7天】本文介绍了 Linux 系统中服务管理机制,并详细说明了如何在使用 systemd 和 System V 的系统上设置 Oracle 数据库的开机自启动。包括创建服务单元文件、编辑启动脚本、设置开机自启动和启动服务的具体步骤。最后建议重启系统验证设置是否成功。
|
18天前
|
关系型数据库 MySQL Linux
Linux系统如何设置自启动服务在MySQL数据库启动后执行?
【10月更文挑战第25天】Linux系统如何设置自启动服务在MySQL数据库启动后执行?
64 3
|
24天前
|
Ubuntu 应用服务中间件 Linux
Linux下搭建Nginx环境的搭建
Linux下搭建Nginx环境的搭建
|
19天前
|
Linux UED iOS开发
|
27天前
|
监控 Linux 云计算
Linux操作系统在云计算环境中的实践与优化###
【10月更文挑战第16天】 本文探讨了Linux操作系统在云计算环境中的应用实践,重点分析了其在稳定性、安全性和高效性方面的优势。通过具体案例,阐述了Linux如何支持虚拟化技术、实现资源高效分配以及与其他开源技术的无缝集成。文章还提供了针对Linux系统在云计算中的优化建议,包括内核参数调整、文件系统选择和性能监控工具的应用,旨在帮助读者更好地理解和应用Linux于云计算场景。 ###
34 3
|
4天前
|
网络协议 安全 Linux
Linux 上设置自己的公共时间服务器
Linux 上设置自己的公共时间服务器
16 0