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_OBJECTWaveChart* 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;
}
运行效果:

总结
本篇文章就讲解到这里。
相关文章:
Linux MQTT智能家居(温度,湿度,环境监测,摄像头等界面布局设置)
文章目录 前言一、温度湿度曲线布局二、环境监测界面布局三、摄像头界面布局总结 前言 本篇文章来完成另外三个界面的布局设置。 这里会使用到 feiyangqingyun的一些控件库。 一、温度湿度曲线布局 TempHumtiy.h: #ifndef TEMPHUMTIY_H #define TEMPHUMTIY_H#include <…...
权衡与选择:如何巧妙管理项目需求的优先级
在项目管理领域,处理和管理需求可能是最具挑战性的环节之一。每一个项目都充满了各种需求,从业务需求到技术需求,从用户需求到系统需求。而如何有效地为这些需求排列优先级,不仅会影响项目的进度和资源分配,还会直接关…...
UGUI组件EventTrigger用法
一.Unity编辑器中EventTrigger组件用法 1.添加事件类型 2.绑定gameObject指定组件的方法 3.方法执行逻辑 public class NewBehaviourScript : MonoBehaviour {public void PointerDown(){Debug.Log("Trigger PointerDown");} } 4.按下鼠标,绑定方法成功…...
Visual Studio 2019 详细安装教程(图文版)
前言 Visual Studio 2019 安装包的下载教程、安装教程 教程 博主博客链接:https://blog.csdn.net/m0_74014525 关注博主,后期持续更新系列文章 ********文章附有百度网盘安装包链接********* 系列文章 第一篇:Visual Studio 2019 详细安装教…...
idea添加作者信息
idea添加作者信息 自定义作者信息idea添加作者信息自定义作者信息 自定义作者信息 idea添加作者信息 在idea中,经常会有这些波浪纹提示,放在上面之后会提示添加作者信息,点击添加作者信息后,但是不是自己想要的 这里提取的话好像没什么办法…...
后端开发6.权限控制模块
概述 权限控制采用springsecurity 数据库设计 用户表 DROP TABLE IF EXISTS `admin`; CREATE TABLE `admin` (`aid` int(32) NOT NULL AUTO_INCREMENT,`email` varchar(50) DEFAULT NULL,`username` varchar(50) DEFAULT NULL,`password` varchar(255) DEFAULT NULL,`phone…...
Golang原生实现JA3指纹修改,并支持Proxy代理
起因 抓取某个HTTPS网站的时候 开启charles代理能够抓取成功,关闭被风控 通过检测,怀疑可能是tls的时候有区别 尝试 golang的http中,Transport.TLSClientConfig是可以自定义设置的 但起初通过随意设置并不能绕过风控 困难 使用golang的http客户端,修改DialTLSContext函数的…...
一个案例:Vue2组件化开发组件从入门到入土
1. 环境搭建 1.1. 创建项目 npm install -g vue/clivue create vue_study_todolist1.2. 清空项目代码 清楚HelloWorld.Vue代码中的内容。 1.3. 启动空项目 1.4 项目目标 项目组件实现以下效果 2. 组件拆分代码 Vue是一个基于组件的框架,允许您将界面拆分成小的…...
智慧工地源码 智慧工地云平台源码 智慧工地APP源码
智慧工地的核心是数字化,它通过传感器、监控设备、智能终端等技术手段,实现对工地各个环节的实时数据采集和传输,如环境温度、湿度、噪音等数据信息,将数据汇集到云端进行处理和分析,生成各种报表、图表和预警信息&…...
考研408 | 【计算机网络】 网络层
导图 网络层: 路由器功能:转发&路由选择 数据平面 数据平面执行的主要功能是根据转发表进行转发,这是路由器的本地动作。 控制平面 1.传统方法/每路由器法: 2.SDN方法(Software-Defined Networking) 控制平面中的…...
postgresql|数据库|角色(用户)管理工作---授权和去权以及usage和select两种权限的区别
前言: postgresql做为一个比较复杂的关系型的重型数据库,不管是安装部署,还是后期的运行维护,都还是有比较多的细节问题需要引起关注。 例如,用户权限的合理分配,那么,什么是权限的合理分配呢…...
【题解】旋转数组的最小数字、比较版本号
文章目录 旋转数组的最小数字比较版本号 旋转数组的最小数字 题目链接:旋转数组的最小数字 解题思路1:遍历求最小值 代码如下: int minNumberInRotateArray(vector<int> rotateArray) {int min rotateArray[0];for(auto const&…...
springboot系统内多级调用报错日志输出顺序
忘记,模糊,故专门验证下 比如方法1调用方法2 方法2又调用方法3 方法3报错 那么报错日志中哪个方法所在行先打印出来? 直接上测试代码 package pers.wwz.study.exception.controller;import lombok.extern.slf4j.Slf4j; import org.springframework.web.bind.annotation.Requ…...
django——配置 settings.py 及相关参数说明
3. 配置 settings.py 及相关参数说明 3.1 配置setting.py文件 设置setting.py文件 加入安装的库 apps.erp_test, rest_framework, django_filters, drf_spectacular,加入新增的APP users启动项目 # 运行项目先执行数据库相关操作,再启动 django 项目 python manag…...
OptaPlanner笔记1
1.1 什么是OptaPlanner 每个组织都面临规划问题:为产品或服务提供有限的受约束的资源(员工、资产、时间和金钱)。OptaPlanner用来优化这种规划,以实现用更少的资源来做更多的业务。 这被称为Constraint Satisfaction Programming…...
github 镜像站及下载加速网址
1、提供常用的镜像网址(记住千万别登录账号): https://github.com.cnpmjs.org https://hub.fastgit.org https://hub.nuaa.cf/ https://hub.yzuu.cf/ https://hub.njuu.cf/上面的网址是一个克隆版的Github,上面的镜像网站内容跟G…...
大数据-玩转数据-Flink RedisSink
一、添加Redis Connector依赖 具体版本根据实际情况确定 <dependency><groupId>org.apache.flink</groupId><artifactId>flink-connector-redis_2.11</artifactId><version>1.1.5</version> </dependency>二、启动redis 参…...
c++病毒/恶搞代码大全( 上 )
注:以下代码应勿用于非法(Dev-c5.11实测可用) 1: 效果:无限生成cmd 解决方法:关闭程序即可 #include<bits/stdc.h> #include<windows.h> using namespace std; int main() {while(1)system("start cmd"…...
【数学建模】清风数模更新5 灰色关联分析
灰色关联分析综述 诸如经济系统、生态系统、社会系统等抽象系统都包含许多因素,系统整体的发展受各个因素共同影响。 为了更好地推动系统发展,我们需要清楚哪些因素是主要的,哪些是次要的,哪些是积极的,哪些是消极的…...
Windows下运行Tomcat服务时报GC Overhead Limit Exceeded
根本原因是在新建Tomcat作为Windows服务时,系统默认设置的堆内存太小了,我们打开/bin/service.bat文件,将如下图所示的默认值改大一些就好了 if "%JvmMs%" "" set JvmMs512 if "%JvmMx%" "" set J…...
Python爬虫实战:研究MechanicalSoup库相关技术
一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...
7.4.分块查找
一.分块查找的算法思想: 1.实例: 以上述图片的顺序表为例, 该顺序表的数据元素从整体来看是乱序的,但如果把这些数据元素分成一块一块的小区间, 第一个区间[0,1]索引上的数据元素都是小于等于10的, 第二…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...
Admin.Net中的消息通信SignalR解释
定义集线器接口 IOnlineUserHub public interface IOnlineUserHub {/// 在线用户列表Task OnlineUserList(OnlineUserList context);/// 强制下线Task ForceOffline(object context);/// 发布站内消息Task PublicNotice(SysNotice context);/// 接收消息Task ReceiveMessage(…...
【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...
零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...
Android15默认授权浮窗权限
我们经常有那种需求,客户需要定制的apk集成在ROM中,并且默认授予其【显示在其他应用的上层】权限,也就是我们常说的浮窗权限,那么我们就可以通过以下方法在wms、ams等系统服务的systemReady()方法中调用即可实现预置应用默认授权浮…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
uniapp中使用aixos 报错
问题: 在uniapp中使用aixos,运行后报如下错误: AxiosError: There is no suitable adapter to dispatch the request since : - adapter xhr is not supported by the environment - adapter http is not available in the build 解决方案&…...
