Computadora host SCADA de simulación de animación de monitoreo de energía Qt + C ++

 Ejemplos de programas seleccionados

Computadora host SCADA de simulación de animación de monitoreo de energía Qt + C ++

Si necesita instalar el entorno operativo o la depuración remota, consulte su tarjeta de presentación QQ personal al final del artículo para obtener asistencia remota de técnicos profesionales.

prefacio

Este blog escribe código para <<Qt+C++ computadora host SCADA de simulación de animación de monitoreo de energía>>. El código es limpio, regular y fácil de leer. Recomendado para aprendizaje y aplicación.


Directorio de artículos

1. Herramientas y software necesarios

2. Pasos de uso

        1. Importar la biblioteca

        2. Implementación del código

        3. Resultados de ejecución

3. Asistencia en línea

1. Herramientas y software necesarios

1. VS, Qt

2.C++

2. Pasos de uso

1. Importar la biblioteca

#include "MainWindow.h"

#include<iostream>
#include <QThread>

#include <thread>
#include <chrono>
#include <QObject>
#include <QThread>
#include <QDebug>
#include <QFile>
#include <QTimer>
#include <QMutex>
#include <QWaitCondition>
#include<opencv2/opencv.hpp>
#include <QDebug>
#include <QBitmap>
#include <QPainter>

#include<QImage>
#include<QPixmap>
#include<QTransform>
#include<QPropertyAnimation>
#include<QGraphicsPixmapItem>
#include<QGraphicsScene>
#include <QtConcurrent/QtConcurrent>

2. Implementación del código

El código se muestra a continuación:

void MainWindow::lightStrip1()
{
# if 1

    int imageCount = 11;
    int imageSpacing = 5; // 图片间距,-85

    qDebug() << "lightStrip2";
    QLabel* labelName = ui.label_4;

    int labelWidth = labelName->width();
    int labelHeight = labelName->height();
    qDebug() << "labelWidth: " << labelWidth;
    qDebug() << "labelHeight: " << labelHeight;
    qDebug() << "";

    labelName->clear();

    // 创建画布,与label_3一样大小
    QPixmap canvas(labelName->size());
    canvas.fill(Qt::transparent);

    // 创建画家并将画布设置为绘制目标
    QPainter painter(&canvas);

    // 计算每个加载的图片y坐标
    int y = yPos1;

    // 计算每个图片的总高度(包括间距)
    //int totalHeight = imageCount * (labelName->height() + imageSpacing) - imageSpacing - 80;
   //  int totalHeight = 100;
    int totalHeight = labelName->height();
    qDebug() << "totalHeight: " << totalHeight;

    // 同时绘制多个图片
    for (int i = 0; i < imageCount; i++) {
        // 加载当前图片
        QString imagePath = QString("./imgLightStrip/%1.png").arg(i + 1);
        QPixmap image(imagePath);

        // 定义新的尺寸
        int newWidth = 30;  // 替换为所需的宽度
        int newHeight = 100;  // 替换为所需的高度
        // 调整图片尺寸
        QPixmap resizedImage = image.scaled(newWidth, newHeight);


        int imageWidth = resizedImage.width();
        int imageHeight = resizedImage.height();
        qDebug() << "imageWidth: " << imageWidth;
        qDebug() << "imageHeight: " << imageHeight;
        qDebug() << "";

        int imageWidthT = labelName->width() * 0.3; //用label宽度的0.3比例作为图片宽度
        int imageHeightT = imageHeight * (labelName->width() * 0.3) / imageWidth;
        qDebug() << "imageWidthT: " << imageWidthT;
        qDebug() << "imageHeightT: " << imageHeightT;
        qDebug() << "";



        // 调整图片尺寸以适应label_3的宽度
        QPixmap scaledImage = resizedImage.scaledToWidth(labelName->width() * 0.3);

        // 计算水平居中的x坐标
        int x = (labelName->width() - scaledImage.width()) / 2;

        // 更新y坐标,实现图片向下流动的效果
        //y += totalHeight + 5; // 5是每个图片之间的间隔
        //int y = yPos + i * (labelName->height() + imageSpacing);
        int y = yPos1 + i * (imageHeightT + imageSpacing);
        if (y >= labelName->height()) { // 图片完全超出上方可视区域时,重新调整y坐标
            y -= totalHeight;
        }

        // 将图片绘制到画布上
        painter.drawPixmap(x, y, scaledImage);

        // 如果图片完全超出下方可视区域时,重新调整y坐标
        //if (y >= labelHeight + imageHeightT + 5) {
        //    y = yPos;
        //}
    }

#endif
}
class WorkerThread3 : public QThread {
	Q_OBJECT
public:
	void run() override {
		QTimer timer3;
		connect(&timer3, &QTimer::timeout, this, &WorkerThread3::lightStrip3);
		timer3.start(200); // 设置定时器间隔,单位为毫秒
		exec();
	}

	~WorkerThread3() {
		quit();  // 请求线程退出
		wait();  // 等待线程完成
	}

signals:
	void lightStrip3();
};

3. Resultados de ejecución

animación

 

3. Asistencia en línea:

Si necesita instalar el entorno operativo o la depuración remota, consulte su tarjeta de presentación QQ personal al final del artículo para obtener asistencia remota de técnicos profesionales.
1) Instalación remota y entorno de ejecución, depuración de código
2) Guía de entrada de Qt, C++, Python
3) Embellecimiento de la interfaz
4) Producción de software

Enlace del artículo actual: herramienta de comunicación de servicio al cliente manual basada en web y escritorio Python + Qt_blog-CSDN de alicema1111

Artículos recomendados por blogueros: reconocimiento facial de Python contando personas blog qt form-CSDN

Artículo recomendado por Blogger: intercambio de código fuente de reconocimiento de humo de llama Python Yolov5-Blog CSDN

                         Python OpenCV identifica la cantidad de personas que entran y salen de la entrada peatonal_python identifica la cantidad de personas-CSDN Blog

Página de inicio del blog personal: blog_CSDN de alicema1111: Python, C ++, blogger web

Haga clic aquí para ver todos los artículos del blogger : blog_CSDN de alicema1111: Python, C++, blogger web

Supongo que te gusta

Origin blog.csdn.net/alicema1111/article/details/132452517
Recomendado
Clasificación