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

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(0, 50); // 设置纵坐标范围为0~50
    temperatureChart->addAxis(temperatureAxisY, Qt::AlignLeft);
    temperatureSeries->attachAxis(temperatureAxisY);

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

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

    layout->addWidget(temperatureChartView); // 使用布局对象的addWidget()函数添加chartView

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

    // 创建湿度折线图
    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(20, 80); // 设置纵坐标范围为20~80
    humidityChart->addAxis(humidityAxisY, Qt::AlignLeft);
    humiditySeries->attachAxis(humidityAxisY);

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

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

    layout->addWidget(humidityChartView); // 使用布局对象的addWidget()函数添加chartView

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

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

Information::~Information()
{
    delete ui;
}
Qt图表应用:实时家居状态可视化

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

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