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

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

    QVBoxLayout *layout = new QVBoxLayout(this); 

    QtCharts::QChartView *chartView = new QtCharts::QChartView(this);
    QtCharts::QLineSeries *series = new QtCharts::QLineSeries();

    QSqlQuery query;
    query.exec('SELECT value FROM Status WHERE device_name = \'温度\'');
    while (query.next())
    {
        double temperature = query.value(0).toDouble();
        series->append(series->count(), temperature);
    }

    QtCharts::QChart *chart = new QtCharts::QChart();
    chart->addSeries(series);

    QtCharts::QValueAxis *axisY = new QtCharts::QValueAxis();
    chart->addAxis(axisY, Qt::AlignLeft);
    series->attachAxis(axisY);

    chartView->setChart(chart);
    chartView->setRenderHint(QPainter::Antialiasing);
    chartView->setMinimumSize(800, 600);

    layout->addWidget(chartView); 

    setLayout(layout); 
}

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

代码解析:

  1. 引入头文件: 包含了Qt Charts库、数据库操作以及布局管理相关的头文件。
  2. 创建布局对象: 使用QVBoxLayout创建一个垂直布局对象layout,用于管理chartView的位置。
  3. 创建图表视图: 使用QChartView创建一个图表视图chartView,用于显示图表。
  4. 创建数据序列: 使用QLineSeries创建一个数据序列series,用于存储温度数据。
  5. 查询数据库: 使用QSqlQuery执行SQL语句,从数据库中查询温度数据,并将数据添加到series中。
  6. 创建图表: 使用QChart创建一个图表对象chart,并将series添加到图表中。
  7. 设置Y轴: 使用QValueAxis创建一个Y轴对象axisY,并将其添加到图表中。
  8. 将图表添加到视图: 使用chartView->setChart(chart)将图表对象chart添加到图表视图chartView中。
  9. 将图表视图添加到布局: 使用layout->addWidget(chartView)将图表视图chartView添加到布局对象layout中。
  10. 设置窗口布局: 使用setLayout(layout)将布局对象layout设置为窗口的布局。

通过以上步骤,您就可以在Qt应用程序中创建一个实时显示家居温度数据的图表了。

使用Qt Charts实时显示家居温度数据

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

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