【QT】热成像demo(1)

该博客介绍了如何使用QT创建一个热成像Demo,展示从PLC获取的温度数据。通过QPainter在界面上绘制图像,实现了对不同色阶的点进行绘制,同时提供了数据预处理和高斯处理的工具类。代码示例展示了数据读取、处理和图像绘制的完整流程,包括图像旋转和缩放功能。
摘要由CSDN通过智能技术生成


前言

本期博文介绍一个热成像demo,可以对plc获取到的各个点温度在QT中进行展示成像,目前demo已经上传,已经测试通过,内含源码和exe文件,可以直接使用,也可以访问红外测试demo.zip下载。针对demo的高斯处理强化,在博文【QT】高斯处理后的图像生成工具类(2)进行了介绍,提供了封装后的源码,可以直接使用。

效果展示

在这里插入图片描述
在这里插入图片描述

功能实现

在功能实现过程中,主要是基于各个色阶,以QPainter进行各点绘制,没有涉及高斯等平滑处理,如有需求,可以查看【QT】高斯处理后的图像生成工具类(2)

QPainter介绍

QPainter是Qt中的一个绘图对象,用于绘制各种图形、文本和图像。它提供了绘制直线、多边形、椭圆、文本、图像等各种功能。

QPainter的使用通常涉及以下步骤:

  1. 创建一个QPainter对象,并将其与需要绘制的设备(如QWidget、QImage等)关联。
  2. 使用绘图函数(如drawLine()、drawRect()、drawEllipse()等)来绘制不同的图形。
  3. 根据需要,设置绘制属性,如画笔的颜色、线条的粗细等。
  4. 绘制完成后,将绘制结果刷新到设备上(如通过调用update()函数来更新部分区域)。
    以下是一些常用的QPainter绘图函数:
  • drawPoint():绘制一个点
  • drawLine():绘制一条直线
  • drawRect():绘制一个矩形
  • drawEllipse():绘制一个椭圆
  • drawPolygon():绘制一个多边形
  • drawText():绘制文本
  • drawImage():绘制图像

在绘制之前,可以通过设置QPen和QBrush来定义画笔和填充样式,例如设置画笔颜色、线条样式、填充颜色等。可以通过以下函数来设置这些属性:

  • setPen():设置画笔属性
  • setBrush():设置填充样式

QPainter还提供了一些其他功能,如渐变填充、裁剪区域、图像变换等。

总的来说,QPainter是Qt中用于图形绘制的一种方便、灵活的工具,它可以通过简单的函数调用来绘制各种图形和图像,使得界面美化和数据可视化变得更加容易和高效。

部分代码展示

mainwindow.cpp

#include "mainwindow.h"
#include "ui_mainwindow.h"
#include <QTime>
#include <QMessageBox>
#include <QFile>
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{


    ui->setupUi(this);
    ini();
    //this->setFixedSize(320,320);

}

MainWindow::~MainWindow()
{
    delete ui;
}
//系统自动刷新
void MainWindow::paintEvent(QPaintEvent *)
{
    if(go){
        go=false;//必须加这里,因为手动更新,更次次数不限定
        if(getData()){
            // 创建一个 QImage 对象
            QImage image(32, 32, QImage::Format_RGB32);
            QRgb value;
            // 改变指定区域的像素点的值
            for(int i=0;i<32;i++){
                for(int j=0;j<32;j++){
                    QString realData=data.at(i).at(j);
                    int ratio=realData.toInt();
                    QStringList rgb=colorList.at(ratio);
                    QString redTemp =rgb.at(0);
                    QString greenTemp=rgb.at(1);
                    QString blueTemp =rgb.at(2);
                    uint red = redTemp.toInt();
                    uint green = greenTemp.toInt();
                    uint blue = blueTemp.toInt();
                    value = qRgb(red, green, blue);
                    image.setPixel(i, j, value);    // 设置每个像素点的值
                }
            }

            QPainter painter1(this);
            //实现整体旋转
            painter1.translate(160,160); //让图片的中心作为旋转的中心
            painter1.rotate(90); //顺时针旋转90度
            painter1.translate(-160,-160); //使原点复原
            // 将图像绘制到窗口中
            painter1.drawImage(0, 0, image.scaled(320,320, Qt::KeepAspectRatio));

        }else{
            QMessageBox::information(NULL,"提示","存在数据大于最大值,或小于最大值");

        }


    }else{
        //不执行
    }


}
//处理数据
bool MainWindow::getData(){
    //数据预处理
    QString content=ui->data->toPlainText();
    QStringList strTemp=content.split(" ");
    QStringList str;//正式数据集
    for(int j=0;j<strTemp.count();j++){
        if(strTemp.at(j) !=""){
            str <<strTemp.at(j);
        }
    }
    qDebug() <<"数量"<<str.count();

    //正式处理
    data.clear();
    max=ui->HighT->toPlainText().toFloat();
    min=ui->lowT->toPlainText().toFloat();
    qDebug() <<max<<min;
    QStringList temp;
    for(int i=0;i<str.count()/2;i++){
        QString hexstr1 = str[i*2];
        QString hexstr = str[i*2+1];
        bool ok;
        quint16 tempData = ((hexstr1.toInt(&ok,16)&0x00FF)<<8) + hexstr.toInt(&ok,16);
        float num=(tempData - 2731)/10.0;
        if((num>max)||(num<min)){
            return false;
        }
        int radio=(num-min)/(max-min)*(pow-1);
        temp << QString::number(radio);
        if(((i+1)%32==0)&&(i!=0)){
            data <<temp;
            temp.clear();
        }
    }
    return true;
    qDebug() <<"数据处理完成"<<str.count();
    //deal(ui->data->toPlainText());
//   data <<deal("0B 89 0B 90 0B 8B 0B 96 0B 8D 0B 8E 0B 8E 0B 9C 0B 9F 0B 95 0B 9E 0B 98 0B A2 0B BC 0B BC 0B B1 0B BD 0B C6 0B C6 0B B6 0B C3 0B AF 0B 9D 0B A8 0B A3 0B AC 0B 9F 0B 96 0B 93 0B 8D 0B 94 0B 89");
//   data <<deal("0B 8A 0B A3 0B 89 0B 89 0B 7C 0B A1 0B A0 0B A1 0B A1 0B 84 0B 9B 0B AE 0B B1 0B D3 0B D2 0B BA 0B C4 0B CF 0B CA 0B C2 0B BD 0B A4 0B AB 0B 9F 0B 90 0B 8C 0B 82 0B 9F 0B 9D 0B 86 0B 92 0B 72");
//   data <<deal("0B 7F 0B 80 0B A2 0B 92 0B 90 0B 89 0B 8C 0B 92 0B A6 0B B0 0B A9 0B CA 0B B3 0B D5 0B D9 0B D7 0B CC 0B CD 0B CA 0B CF 0B D3 0B C1 0B CB 0B B3 0B A5 0B AB 0B 8C 0B 98 0B 92 0B 96 0B 9A 0B 8E");
//   data <<deal("0B 8E 0B 93 0B 92 0B 8E 0B 69 0B 8F 0B 97 0B 97 0B A7 0B A3 0B C7 0B D2 0B E4 0B D5 0B E4 0B C9 0B DE 0B E9 0B ED 0B D4 0B DE 0B D5 0B C0 0B CA 0B B6 0B AB 0B B0 0B 91 0B A9 0B 9A 0B 9C 0B 9B");
//   data <<deal("0B A4 0B A1 0B 89 0B 81 0B 72 0B 93 0B 99 0B 94 0B A8 0B C2 0B DD 0B EF 0B F4 0B FE 0C 10 0C 0D 0B F6 0B ED 0C 09 0C 01 0B F3 0B DE 0B D3 0B C6 0B C6 0B B9 0B 96 0B 96 0B 87 0B 96 0B 8B 0B A6");
//   data <<deal("0B 90 0B A8 0B 95 0B 8E 0B 8B 0B 96 0B 95 0B AB 0B A9 0B BD 0B E3 0B FE 0C 0C 0C 0A 0C 01 0C 0A 0C 05 0C 07 0C 09 0B F4 0B DE 0B E9 0B F6 0B CE 0B CF 0B C3 0B A6 0B 98 0B 94 0B 9B 0B 8E 0B 96");
//   data <<deal("0B 98 0B 93 0B 92 0B 8C 0B 9E 0B 90 0B A6 0B A3 0B B6 0B E6 0B FE 0B FD 0B DD 0C 08 0C 0B 0B FE 0C 10 0C 07 0C 0F 0C 04 0B FD 0C 0B 0C 02 0B DB 0B DA 0B C7 0B A9 0B A8 0B 93 0B 94 0B 92 0B 91");
//   data <<deal("0B 93 0B 8D 0B 87 0B 93 0B 7A 0B 9F 0B AC 0B 9E 0B DB 0B F0 0B FD 0C 08 0B FE 0B F6 0C 09 0B DD 0B FD 0C 0C 0C 0D 0C 0C 0C 06 0B FF 0C 0A 0B F7 0B E7 0B D6 0C 47 0B A1 0B 9F 0B 97 0B 97 0B A0");
//   data <<deal("0B A3 0B AA 0B 9D 0B 9D 0B 97 0B 8A 0B A4 0B B9 0B E9 0B FE 0B F8 0C 00 0C 00 0C 02 0C 0A 0C 07 0C 04 0C 12 0C 0A 0C 08 0C 0D 0C 0A 0C 0C 0C 0A 0B F7 0B DA 0B C1 0B A0 0B 8E 0B A2 0B 94 0B 93");
//   data <<deal("0B 92 0B 98 0B A7 0B AA 0B 93 0B 9E 0B 9E 0B B0 0B E4 0B E9 0C 08 0C 04 0C 00 0C 0B 0C 08 0C 07 0C 0A 0C 07 0C 07 0B FD 0B F5 0C 06 0B F3 0C 05 0B FF 0B F0 0B C1 0B A5 0B 9A 0B 8D 0B 8A 0B 8A");
//   data <<deal("0B 97 0B A3 0B A9 0B C1 0B 84 0B 97 0B A3 0B A1 0B EA 0B FC 0C 05 0B FA 0B D1 0C 01 0C 0B 0C 0C 0C 23 0C 0C 0C 08 0B F8 0C 00 0C 0B 0C 0D 0B FD 0C 03 0B EE 0B BB 0B AD 0B 93 0B 92 0B 9A 0B 97");
//   data <<deal("0B A4 0B 91 0B A1 0B B9 0B 81 0B 8C 0B 93 0B A8 0B AF 0B C4 0B F3 0B FE 0C 05 0B F7 0B FD 0B E2 0B E9 0C 06 0C 15 0C 01 0B FF 0B F1 0B FD 0C 01 0C 0D 0B EE 0B BE 0B A9 0B A3 0B 94 0B 92 0B 79");
//   data <<deal("0B 97 0B 99 0B 8A 0B 8D 0B 93 0B 94 0B 8E 0B 9D 0B DD 0C 01 0B FE 0C 04 0C 08 0C 09 0C 08 0C 00 0C 05 0C 03 0C 0A 0C 08 0C 06 0B F5 0C 03 0B F8 0C 01 0B EE 0B B9 0B 9B 0B 8F 0B 95 0B 9A 0B A2");
//   data <<deal("0B 94 0B 9F 0B 9B 0B 8A 0B 96 0B 9F 0B 9B 0B AC 0B EA 0B E9 0B F8 0C 00 0C 01 0C 04 0C 05 0B F3 0B FD 0C 02 0B EF 0B FB 0B FB 0B FA 0B FC 0B F7 0B FF 0B FC 0B AB 0B 9C 0B 91 0B 9C 0B 9B 0B 9B");
//   data <<deal("0B 8F 0B 8D 0B A3 0B 8C 0B 87 0B 9D 0B 93 0B 97 0B F4 0C 03 0B FB 0B FC 0B D5 0C 02 0C 04 0B F3 0C 14 0B E6 0B F7 0B F7 0B F9 0B FC 0C 0A 0C 04 0B F4 0B ED 0B C7 0B 9A 0B 8B 0B 9D 0B 85 0B 95");
//   data <<deal("0B 97 0B 8C 0B 8F 0B 9A 0B 91 0B 91 0B A6 0B 97 0B E9 0C 0A 0C 06 0B FC 0C 01 0C 02 0C 03 0B DC 0B E2 0B FE 0C 02 0C 02 0C 0C 0B F5 0C 07 0B FB 0B FD 0B FB 0B E2 0B 95 0B 9E 0B 9F 0B 90 0B 94");
//   data <<deal("0B 9A 0B 8B 0B 9C 0B 8D 0B 82 0B 89 0B A4 0B A4 0B DF 0B FB 0B F9 0B F6 0B FE 0C 05 0C 06 0B F9 0B FA 0B F7 0B FE 0C 01 0B FE 0B F1 0B F3 0B F5 0B F8 0B E4 0B D3 0B 96 0B AD 0B 89 0B BC 0B 9C");
//   data <<deal("0B 96 0B 9B 0B 8E 0B 81 0B 96 0B 95 0B 83 0B A3 0B D6 0B FD 0C 03 0C 05 0C 05 0C 02 0C 02 0B F8 0C 05 0B FB 0B F8 0C 16 0C 0A 0B EF 0C 03 0B F5 0B E1 0B F3 0B BE 0B 9B 0B AA 0B A0 0B 99 0B 97");
//   data <<deal("0B 9E 0B 94 0B 9D 0B 97 0B 94 0B 92 0B 9C 0B 98 0B DC 0C 01 0C 01 0C 01 0B FE 0C 02 0C 05 0B F3 0B FE 0B F8 0B F7 0C 04 0C 0E 0C 05 0B FE 0B EA 0B FD 0B E2 0B AD 0B A3 0B A2 0B 9B 0B 89 0B 97");
//   data <<deal("0B 72 0B 8A 0B AC 0B 99 0B 91 0B 8F 0B 89 0B 95 0B D3 0B F7 0C 1A 0B F3 0C 05 0B F3 0C 0C 0C 09 0B FF 0B FE 0C 08 0C 08 0C 06 0B F8 0B F1 0B F3 0B E9 0C 83 0A F9 0B 9D 0B A3 0B A4 0B AD 0B B6");
//   data <<deal("0B 8F 0B 85 0B 9A 0B 98 0B 98 0B A0 0B A1 0B AD 0B AA 0B EF 0B FB 0B FA 0C 05 0B F4 0C 05 0B FB 0C 07 0B F3 0C 0A 0C 01 0C 0B 0C 08 0B F7 0B F6 0B D4 0B 92 0B 9D 0B 95 0B AA 0B AD 0B C8 0B AE");
//   data <<deal("0B 97 0B 98 0B 9E 0B 89 0B 96 0B 9E 0B AD 0B A7 0B A9 0B FB 0B FD 0C 0A 0C 01 0B FB 0C 01 0C 00 0C 00 0C 00 0C 03 0C 0D 0C 05 0B F5 0B EF 0B F1 0B B4 0B A6 0B A1 0B A1 0B B0 0B A4 0B AE 0B A6");
//   data <<deal("0B 97 0B 8D 0B 9D 0B 94 0B A2 0B A0 0B B4 0B 9F 0B A5 0B D0 0B F9 0B F1 0C 0A 0B F8 0C 01 0C 00 0B FF 0C 14 0B F8 0C 04 0C 02 0B FD 0B F3 0B DC 0B B0 0B A8 0B 9E 0B 9A 0B A0 0B A3 0B 8B 0B 95");
//   data <<deal("0B 86 0B 90 0B AE 0B 9C 0B 9B 0B 8D 0B 93 0B 95 0B 94 0B A7 0B F9 0B FE 0C 08 0C 0C 0C 0C 0C 0A 0B F8 0C 0F 0C 07 0C 0A 0C 07 0B F8 0B E9 0B E2 0B A8 0B A3 0B 9F 0B 9D 0B 98 0B 83 0B 9D 0B 97");
//   data <<deal("0B 8E 0B 97 0B 90 0B 92 0B 8D 0B 87 0B AE 0B A4 0B 8B 0B 9E 0B BE 0B F9 0B FC 0B F5 0B FB 0B ED 0C 05 0C 02 0C 03 0C 00 0B FA 0C 04 0B E1 0B B7 0B 99 0B 9C 0B 9A 0B 91 0B 84 0B 9D 0B B9 0B 93");
//   data <<deal("0B 92 0B 85 0B 91 0B 83 0B 99 0B 98 0B 99 0B A3 0B 97 0B A2 0B BA 0B F3 0C 03 0B FA 0C 03 0C 04 0C 13 0C 04 0C 07 0C 04 0B FD 0B F8 0B F3 0B C1 0B 96 0B 90 0B A4 0B 9C 0B AE 0B 9B 0B 9E 0B 90");
//   data <<deal("0B 9F 0B 86 0B A5 0B 99 0B 93 0B 88 0B AC 0B 94 0B 9D 0B B7 0B D3 0B EE 0C 02 0C 02 0B FF 0B EA 0B F8 0B F3 0B FE 0C 03 0B FD 0B FF 0B FF 0B CA 0B C6 0B B1 0B 9E 0B 9C 0B 9D 0B 9C 0B 97 0B 8F");
//   data <<deal("0B 88 0B 8A 0B A0 0B AB 0B BD 0B C5 0B BD 0B CA 0B C8 0B D1 0C 10 0B F1 0B FD 0B FC 0C 0C 0C 00 0B FD 0B F2 0C 04 0B FF 0B FD 0C 0A 0B EB 0B DE 0B DD 0B D5 0B CF 0B C9 0B B6 0B B6 0B C2 0B 9C");
//   data <<deal("0B AD 0B B6 0B C5 0B CD 0B D1 0B D3 0B CA 0B D3 0B D9 0B D5 0B F2 0C 01 0C 0C 0C 00 0B EF 0B F2 0B FF 0B FD 0B F7 0C 01 0B FE 0B EB 0B F0 0B E7 0B F6 0B C6 0B D0 0B D4 0B CC 0B B6 0B D1 0B D3");
//   data <<deal("0B CF 0B B8 0B C5 0B D6 0B D6 0B DC 0B D9 0B DF 0B E6 0B DC 0B FC 0C 0F 0C 04 0B F5 0C 04 0B F4 0B E6 0B F9 0B ED 0C 0E 0B EC 0B E4 0B EB 0B E3 0B E3 0B DE 0B EF 0B CC 0B CA 0B CD 0B C4 0B D3");
//   data <<deal("0B CD 0B C3 0B D0 0B DA 0B D4 0B E2 0B C5 0B DB 0B E1 0B DE 0B DC 0B D9 0B FF 0C 0A 0B F0 0B E3 0B F1 0B F1 0B E5 0B DB 0B ED 0B E7 0B FE 0B DF 0B DE 0B F2 0B E9 0B E2 0B DE 0B D7 0B C7 0B D0");
//   data <<deal("0B C6 0B CC 0B E2 0B DD 0B E2 0B C2 0B DE 0B DD 0B F7 0B F0 0B FC 0B D1 0B DE 0B E2 0B EA 0B EC 0B E2 0B F1 0B DB 0B EE 0B EC 0B DF 0B DF 0B E4 0B F0 0B DE 0B EB 0B E7 0B CD 0B D1 0B D9 0B E0");


}
//初始化
void MainWindow::ini(){
    //根据线性渐变色条得到颜色表
//    QColor orangeColor = QRgb("#FFA500");
//    QColor purpleColor = QRgb("#ff00ff");
    colorList;//画板
    QLinearGradient linear=QLinearGradient(QPoint(0,0),QPoint(pow-1,0));
    //linear.setColorAt(0, purpleColor);
    //linear.setColorAt(0.17, Qt::blue);
    //linear.setColorAt(0.34, Qt::cyan);
//    linear.setColorAt(0.51, Qt::green);
//    linear.setColorAt(0.68, Qt::yellow);
    //linear.setColorAt(0.85, orangeColor);
    //linear.setColorAt(1, Qt::red);
    linear.setColorAt(0, Qt::green);
    linear.setColorAt(0.5, Qt::yellow);
    linear.setColorAt(1, Qt::red);
    //把渐变色绘制到Img方便取颜色
    QImage img(pow,1,QImage::Format_ARGB32);
    QPainter painter(&img);
    painter.fillRect(img.rect(),linear);
    QStringList temp;
    for(quint32 i=0;i<pow;i++){
        //colorList << QString::number(img.pixel(i,0)&0x00FFFFFF,16);
        QColor color=img.pixel(i,0);
        temp << QString::number(color.red())  <<  QString::number(color.green())<< QString::number(color.blue());
        colorList <<temp;
        temp.clear();
        //qDebug() << color.red() <<color.green()<<color.blue()<<"\n";
    }
}

QStringList MainWindow::deal(QString data){
    QStringList temp;
    QStringList str= data.split(" ");
    for(int i=0;i<str.count()/2;i++){
        QString hexstr1 = str[i*2];
        QString hexstr = str[i*2+1];
        bool ok;
        quint16 tempData = ((hexstr1.toInt(&ok,16)&0x00FF)<<8) + hexstr.toInt(&ok,16);
        float num=(tempData - 2731)/10.0;
        int radio=(num-min)/(max-min)*(pow-1);
//        if(num>max){
//            max=num;
//        }
//        if(num<min){
//            min=num;
//        }
        //temp << QString::number((num-min)/(max-min)*255,'f',1);//获取圆心的alpha通道,在Qt中255表示完全不透明,0表示完全透明
        temp << QString::number(radio);
    }
    return temp;
}
//生成随机数
float MainWindow::generateRand(float min, float max)
{
//    static bool seedStatus;
//    if (!seedStatus)
//    {
//        qsrand(QTime(0, 0, 0).secsTo(QTime::currentTime()));
//        seedStatus = true;
//    }
//    if(min>max)
//    {
//        float temp=min;
//        min=max;
//        max=temp;
//    }
//    double diff = fabs(max-min);
//    double m1=(double)(qrand()%100)/100;
//    double retval=min+m1*diff;
//    return retval;
}

void MainWindow::on_pushButton_clicked()
{
    if((ui->HighT->toPlainText().length()>0)&&(ui->lowT->toPlainText().length()>0)&&(ui->data->toPlainText().length()>0)){
        go=true;
        this->update();//手动更新,更次次数不限定
    }

}

mainwindow.h

#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>

#include <QWidget>
#include <QPainter>
#include <QFont>
#include <QBrush>
#include <QColor>
#include <QPaintDevice>
#include <QPaintEngine>
#include <QPixmap>
#include <QPainterPath>
#include <QDebug>
#include <QLCDNumber>
#include <QRect>
#include <QRectF>
#include <QPoint>
#include <QPointF>
#include <QLabel>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = 0);
    ~MainWindow();

private:
    Ui::MainWindow *ui;
    QList<QStringList> data;
    QList<QStringList> colorList;//画板

protected:
    void paintEvent(QPaintEvent *event);
    bool getData();
    void ini();
    QStringList deal(QString a);
    float generateRand(float min, float max);
//    float max=60.0;
//    float min=0;
//    float max=47.2;
//    float min=7.75;
    float max;
    float min;
    int pow=10000;
    int count=0;
    bool go=false;

private slots:
    void on_pushButton_clicked();
};

#endif // MAINWINDOW_H

mainwindow.ui

<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
 <class>MainWindow</class>
 <widget class="QMainWindow" name="MainWindow">
  <property name="geometry">
   <rect>
    <x>0</x>
    <y>0</y>
    <width>1363</width>
    <height>717</height>
   </rect>
  </property>
  <property name="font">
   <font>
    <pointsize>14</pointsize>
   </font>
  </property>
  <property name="windowTitle">
   <string>MainWindow</string>
  </property>
  <widget class="QWidget" name="centralWidget">
   <widget class="QLabel" name="label">
    <property name="geometry">
     <rect>
      <x>170</x>
      <y>600</y>
      <width>111</width>
      <height>41</height>
     </rect>
    </property>
    <property name="text">
     <string>最高温度</string>
    </property>
   </widget>
   <widget class="QTextEdit" name="HighT">
    <property name="geometry">
     <rect>
      <x>300</x>
      <y>600</y>
      <width>131</width>
      <height>51</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>14</pointsize>
     </font>
    </property>
   </widget>
   <widget class="QLabel" name="label_2">
    <property name="geometry">
     <rect>
      <x>470</x>
      <y>600</y>
      <width>101</width>
      <height>41</height>
     </rect>
    </property>
    <property name="text">
     <string>最低温度</string>
    </property>
   </widget>
   <widget class="QTextEdit" name="lowT">
    <property name="geometry">
     <rect>
      <x>640</x>
      <y>600</y>
      <width>131</width>
      <height>51</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>14</pointsize>
     </font>
    </property>
   </widget>
   <widget class="QPushButton" name="pushButton">
    <property name="geometry">
     <rect>
      <x>800</x>
      <y>580</y>
      <width>191</width>
      <height>71</height>
     </rect>
    </property>
    <property name="text">
     <string>生成</string>
    </property>
   </widget>
   <widget class="QLabel" name="label_3">
    <property name="geometry">
     <rect>
      <x>1000</x>
      <y>40</y>
      <width>101</width>
      <height>41</height>
     </rect>
    </property>
    <property name="text">
     <string>数据填写</string>
    </property>
   </widget>
   <widget class="QTextEdit" name="data">
    <property name="geometry">
     <rect>
      <x>1010</x>
      <y>100</y>
      <width>311</width>
      <height>411</height>
     </rect>
    </property>
    <property name="font">
     <font>
      <pointsize>14</pointsize>
     </font>
    </property>
   </widget>
   <widget class="QTextEdit" name="textEdit">
    <property name="geometry">
     <rect>
      <x>1020</x>
      <y>540</y>
      <width>301</width>
      <height>171</height>
     </rect>
    </property>
    <property name="readOnly">
     <bool>true</bool>
    </property>
    <property name="html">
     <string>&lt;!DOCTYPE HTML PUBLIC &quot;-//W3C//DTD HTML 4.0//EN&quot; &quot;http://www.w3.org/TR/REC-html40/strict.dtd&quot;&gt;
&lt;html&gt;&lt;head&gt;&lt;meta name=&quot;qrichtext&quot; content=&quot;1&quot; /&gt;&lt;style type=&quot;text/css&quot;&gt;
p, li { white-space: pre-wrap; }
&lt;/style&gt;&lt;/head&gt;&lt;body style=&quot; font-family:'SimSun'; font-size:14pt; font-weight:400; font-style:normal;&quot;&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;软件说明:&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;1.每个字节间必须至少有一个空格&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;2.点击可以实时更新&lt;/p&gt;
&lt;p style=&quot; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;&quot;&gt;3.如果有数据不在最高温和最低温之间,会报提示&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
    </property>
   </widget>
  </widget>
 </widget>
 <layoutdefault spacing="6" margin="11"/>
 <resources/>
 <connections/>
</ui>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

傻傻虎虎

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值