#include 'information.h' #include 'ui_information.h' #include 'sqlite.h' #include <QtCharts/QChartView> #include <QtCharts/QLineSeries> #include <QtCharts/QValueAxis> #include #include #include

Information::Information(QWidget *parent) : QWidget(parent), ui(new Ui::Information) { ui->setupUi(this); setWindowTitle('家居状态'); setFixedSize(600,400);

QVBoxLayout *layout = new QVBoxLayout(this); // 创建一个垂直布局对象

// 创建温度折线图
QtCharts::QChartView *temperatureChartView = new QtCharts::QChartView(this);
QtCharts::QLineSeries *temperatureSeries = new QtCharts::QLineSeries();

Sqlite::sqlite_init();
QSqlQuery temperatureQuery;
temperatureQuery.exec('SELECT value FROM Status WHERE device_name = \'空调\' AND device_state = \'开启\'');
while (temperatureQuery.next())
{
    double temperature = temperatureQuery.value(0).toDouble();
    temperatureSeries->append(temperatureSeries->count(), temperature);
}

QtCharts::QChart *temperatureChart = new QtCharts::QChart();
temperatureChart->addSeries(temperatureSeries);

QtCharts::QValueAxis *temperatureAxisY = new QtCharts::QValueAxis();
temperatureAxisY->setRange(-5, 42); // 设置纵坐标范围为-5~42
temperatureChart->addAxis(temperatureAxisY, Qt::AlignLeft);
temperatureSeries->attachAxis(temperatureAxisY);

temperatureChart->setTitle('空调温度变化表'); // 设置折线图名

temperatureChartView->setChart(temperatureChart);
temperatureChartView->setRenderHint(QPainter::Antialiasing);
temperatureChartView->setMinimumSize(600, 200);

temperatureChartView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

// 创建湿度折线图
QtCharts::QChartView *humidityChartView = new QtCharts::QChartView(this);
QtCharts::QLineSeries *humiditySeries = new QtCharts::QLineSeries();

QSqlQuery humidityQuery;
humidityQuery.exec('SELECT value FROM Status WHERE device_name = \'加湿器\' AND device_state = \'开启\'');
while (humidityQuery.next())
{
    double humidity = humidityQuery.value(0).toDouble();
    humiditySeries->append(humiditySeries->count(), humidity);
}

QtCharts::QChart *humidityChart = new QtCharts::QChart();
humidityChart->addSeries(humiditySeries);

QtCharts::QValueAxis *humidityAxisY = new QtCharts::QValueAxis();
humidityAxisY->setRange(0, 100); // 设置纵坐标范围为0~100
humidityChart->addAxis(humidityAxisY, Qt::AlignLeft);
humiditySeries->attachAxis(humidityAxisY);

humidityChart->setTitle('加湿器湿度变化表'); // 设置折线图名

humidityChartView->setChart(humidityChart);
humidityChartView->setRenderHint(QPainter::Antialiasing);
humidityChartView->setMinimumSize(600, 200);

humidityChartView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);

// 将温度图表放置在上方
layout->addWidget(temperatureChartView);
// 将湿度图表放置在下方
layout->addWidget(humidityChartView);

setLayout(layout); // 将布局对象设置为窗口的布局

}

Information::~Information() { delete ui; }

Qt图表实时显示家居温湿度数据

原文地址: https://www.cveoy.top/t/topic/fBlk 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录