Qt做警告处理界面

解决的问题:

做上位机时,多有检测仪器状态,事实显示警告,错误等状态,笔者就是需要显示各种仪器状态,做显示,后做出处理逻辑

Axure设计图:


 需求:更新状态,根据状态值给出处理逻辑,主要看界面;具体业务代码具体实现

如何实现:

实现方式:QWidget中进行布局, QLabel控件进行画图等,实现的组件单独效果如下

可以进行复用,所以暂且叫它:WarningComponent


 

代码块解析:

.h文件:

/*********************************************************************************
*Author:zhouFuLiang
*Date: 2023-08-03  11:51
*Description: 警告组件界面
**********************************************************************************/
#ifndef WARNINGCOMPONENT_H
#define WARNINGCOMPONENT_H

#include <QWidget>
#include <QLabel>

class WarningComponent : public QWidget
{
    Q_OBJECT

public:
    WarningComponent(const QString &strTitle, const QString &strImgPath, QWidget *parent = 0);
    ~WarningComponent();
    /*
     * @brief 设置当前状态
     * @param str 状态
     * @param 唯一对外的接口
     * @return
    */
    void setCurrentState(const QString &str);
protected:
    void paintEvent(QPaintEvent *event);

private:
    void initObject();
    void initGeometry();
    void initConnect();

private:
    QWidget *m_pTitleWidget;
    QLabel *m_pTitleLabel;
    QLabel *m_pImageLabel;
    QLabel *m_pStateLabel;
    QString m_strTitle;
    QString m_strImgPath;
};

#endif // WARNINGCOMPONENT_H

.cpp文件

#include "warningcomponent.h"
#include "public.h"

WarningComponent::WarningComponent(const QString &strTitle, const QString &strImgPath, QWidget *parent)
    : QWidget(parent)
    ,m_strTitle(strTitle)
    ,m_strImgPath(strImgPath)
{
    initObject();
    initGeometry();
    initConnect();
}

WarningComponent::~WarningComponent()
{

}

void WarningComponent::setCurrentState(const QString &str)
{
    m_pStateLabel->setText(str);
}

void WarningComponent::paintEvent(QPaintEvent *event)
{
    QPainter painter(this);
    //    painter.setRenderHint(QPainter::Antialiasing);  // 反锯齿;
    //    painter.setBrush(QBrush(QColor(153, 204, 204)));
    //    painter.setPen(Qt::transparent);
    QRect rect = this->rect();
    rect.setWidth(rect.width() - 1);
    rect.setHeight(rect.height() - 1);
    painter.drawRoundedRect(rect, 15, 15);
    QWidget::paintEvent(event);
}

void WarningComponent::initObject()
{
    this->setWindowFlags(Qt::FramelessWindowHint);

    m_pTitleWidget = new QWidget(this);
    m_pTitleLabel = new QLabel(m_strTitle, m_pTitleWidget);
    m_pTitleLabel->setStyleSheet("QLabel{color:white;}");
    m_pTitleWidget->setStyleSheet("background-color:#717E98; border-top-left-radius:5px; border-top-right-radius:5px;");
    m_pImageLabel = new QLabel(this);
    m_pImageLabel->setPixmap(QPixmap(m_strImgPath));
    m_pImageLabel->resize(100,200);
//    m_pImageLabel->setScaledContents(true);
    m_pStateLabel = new QLabel("State...", this);
}

void WarningComponent::initGeometry()
{
    QVBoxLayout *layout1 = new QVBoxLayout;
    layout1->addWidget(m_pTitleLabel);
    m_pTitleWidget->setLayout(layout1);

    QVBoxLayout *vLayout = new QVBoxLayout;
    vLayout->addWidget(new QLabel(QString::fromLocal8Bit("当前状态"), this), 0, Qt::AlignLeft);
    vLayout->addSpacing(30);
    vLayout->addWidget(m_pStateLabel, 0, Qt::AlignCenter);
    QHBoxLayout *hLayout = new QHBoxLayout;
    hLayout->addWidget(m_pImageLabel);
    hLayout->addLayout(vLayout);

    QVBoxLayout *layout = new QVBoxLayout;
    layout->addWidget(m_pTitleWidget);
    layout->addStretch();
    layout->addSpacing(10);
    layout->addLayout(hLayout);
    layout->addStretch();
    this->setLayout(layout);
}

void WarningComponent::initConnect()
{

}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/64475.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

EditPlus连接Linux系统远程操作文件

EditPlus是一套功能强大的文本编辑器&#xff01; 1.File ->FTP->FTP Settings&#xff1b; 2.Add->Description->FTP server->Username->Password->Subdirectory->Advanced Options 注意&#xff1a;这里的Subdirectory设置的是以后上传文件的默认…

有效管理IT问题的5个原则

问题管理就是发现未知的、隐藏的问题&#xff0c;这是根本原因&#xff0c; 这是您 IT 帮助台无穷无尽的工单来源。当您实施有效的 问题管理&#xff0c;您的 IT 团队可以超越消防模式&#xff0c;专注于战略 IT 目标。以下是可以帮助您实现一流问题管理的五个原则&#xff1a;…

Vue电商项目--VUE插件的使用及原理

图片懒加载 图片懒加载&#xff0c;就是图片延迟加载。只加载页面可视区域上的图片&#xff0c;等滚动到页面下面时&#xff0c;再加载对应视口上的图片 而在vue中有一个插件 vue-lazyload - npm (npmjs.com) npm i vue-lazyload 去使用他&#xff0c;这里我们引入了一张图片…

C 语言的转义字符

转义字符也叫转移序列&#xff0c;包含如下&#xff1a; 转移序列 \0oo 和 \xhh 是 ASCII 码的特殊表示。 八进制数示例&#xff1a; 代码&#xff1a; #include<stdio.h> int main(void) {char beep\007;printf("%c\n",beep);return 0; }结果&#xff1a; …

移动端自动化测试实战

UI自动化测试的价值 1、提升回归测试的效率 2、可以进行兼容性测试 UI 自动化测试应用场景 • 冒烟测试自动化&#xff1a;提测之前自动断言提测质量&#xff0c;提供准入参考。 • 功能测试自动化&#xff1a;辅助 QA 与测试工程师的快速验证。 • 验收测试自动化&#xf…

linux内网穿透应用场景有哪些?快解析有什么用处?

随着网络技术的不断发展&#xff0c;无论是工作上还是在生活中人们对网络的依赖和需求越来越高。Linux内网穿透作为一种创新的解决方案&#xff0c;为我们提供了无限可能。 首先我们了解一下Linux操作系统。Linux是一套免费使用和自由传播的类Unix操作系统&#xff0c;是一个基…

字符函数、字符串函数、内存函数

目录 求字符串长度&#xff1a; size_t strlen ( const char * str ); 无长度限制的字符串函数 字符串拷贝&#xff1a; char * strcpy ( char * destination, const char * source ); 字符串追加&#xff1a; char * strcat ( char * destination, const char * source ); 字…

AR远程专家指导在汽车改装上的应用有哪些?

随着科技的不断发展&#xff0c;AR增强现实技术逐渐走进了我们的生活。加上商贸国际化&#xff0c;远程协同纵深到制造生产的更多环节&#xff0c;研发协同、工艺优化等场景复杂、跨层级、需要频繁沟通确认的流程正通过AR应用实现全面远程化的过渡&#xff0c;在汽车行业&#…

机器视觉赛道持续火热,深眸科技坚持工业AI视觉切入更多应用领域

随着深度学习等算法的突破、算力的不断提升以及海量数据的持续积累&#xff0c;人工智能逐渐从学术界向工业界落地。而机器视觉作为人工智能领域中一个正在快速发展的分支&#xff0c;广泛应用于工业制造的识别、检测、测量、定位等场景&#xff0c;相较于人眼&#xff0c;在精…

C++ 测试框架 GoogleTest 初学者入门篇 丙

断言 什么是断言&#xff1f;断言是用来对表达式执行比较的代码块&#xff0c;调用时类似函数。当表达式一致时&#xff0c;断言返回成功&#xff0c;否则失败。 googletest 的断言是一组宏定义。分为 ASSERT_* 和 EXPECT_* 两种。 比如 ASSERT_EQ(1, 2);EXPECT_EQ(1, 2);上…

MySQL主从复制——概念、原理、搭建过程

文章目录 1.主从复制概念2.主从复制原理3.主从复制结构的搭建3.1 主库配置3.2 从库配置 4.测试主从复制是否搭建成功5.主从复制的小结 DML&#xff08;data manipulation language&#xff09;是数据操纵语言&#xff1a;它们是SELECT、UPDATE、INSERT、DELETE&#xff0c;就象…

vcode开发go

配置环境变量 go env -w GO111MODULEon go env -w GOPROXYhttps://goproxy.cn,direct 创建文件夹 mkdir hello cd hello go mod help go mod help 初始化一个项目 go mod init hello 获取第三方包 go get github.com/shopspring/decimal 将依赖包下载到本地 go mod …

卷积相关点

从传统的神经网络到卷积神经网络 一.传统的神经网络&#xff08;全连接网络&#xff09; 参数太多&#xff0c;冗余度高&#xff0c;容易过拟合&#xff0c;难以训练 二.卷积神经网络 1.空间平移的不变性&#xff1a;当输入的图像在空间上发生平移时&#xff0c;CNN的相应不…

信息与通信工程面试准备——专业知识提问

1.无线通信&#xff1a;依靠电磁波在空间传播以传输信息。 2.通信的目的&#xff1a;传输信息。 3.通信系统&#xff1a;将信息从信源发送到一个或多个目的地。 4.本书中通信一般指电信&#xff1a;利用电信号传输信息&#xff08;光通信属于电信&#xff0c;因为光也是一种…

[NOIP2007 普及组] 纪念品分组

[NOIP2007 普及组] 纪念品分组 题目描述 元旦快到了&#xff0c;校学生会让乐乐负责新年晚会的纪念品发放工作。为使得参加晚会的同学所获得 的纪念品价值相对均衡&#xff0c;他要把购来的纪念品根据价格进行分组&#xff0c;但每组最多只能包括两件纪念品&#xff0c; 并且…

FreeRTOS任务级临界代码保护

前言 临界段代码也叫临界区&#xff0c;是指那些必须完整运行&#xff0c;不能被打断的代码&#xff0c;比如有的外设的初始化需要按照严格的时序&#xff0c;初始化过程不能被打断。FreeRTOS在进入临界段代码的时候需要关闭中断&#xff0c;当处理完临界段代码以后再打开中断…

如何搭建自动化测试框架?资深测试整理的PO模式,一套打通自动化...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 Po模型介绍 1、简…

wpf 3d 坐标系和基本三角形复习

wpf 3d 坐标系的描述见此&#xff0c; WPF 3d坐标系和基本三角形_wpf 坐标系_bcbobo21cn的博客-CSDN博客 X轴正向向右&#xff0c;Y轴正向向上&#xff1b;Z轴&#xff0c;正向是从屏幕里边出来&#xff0c;负向是往屏幕里边去&#xff1b;坐标原点是在呈现区域的中心&#x…

史上最细,自动化测试-logging日志采集详细实战(一)

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 日志概述 1、日志…

C#实现旋转图片验证码

开发环境&#xff1a;C#&#xff0c;VS2019&#xff0c;.NET Core 3.1&#xff0c;ASP.NET Core 1、建立一个验证码控制器 新建两个方法Create和Check&#xff0c;Create用于创建验证码&#xff08;返回1张图片和令牌&#xff09;&#xff0c;Check用于验证&#xff08;验证图…