依图可见我添加的数据不为零,它的初始化为零
但是为什么添加进去的数据不正确
源码
#include "hum_wdiget.h"
#include "ui_hum_wdiget.h"
hum_wdiget::hum_wdiget(QWidget *parent) :
QWidget(parent),
ui(new Ui::hum_wdiget)
{
ui->setupUi(this);
char_hum_init(); //初始化
create_hum_charts(); //创建图表
// 连接定时器的timeout信号到槽函数,时间到时就刷新图表
connect(timer, &QTimer::timeout, this, &hum_wdiget::get_hum_charts);
connect(timer, &QTimer::timeout, this, &hum_wdiget::syn_hum_charts);
// 设置定时器间隔为1000毫秒(1秒)
timer->start(2000);
}
//同步
void hum_wdiget::get_hum_charts()
{
emit requestData();
}
void hum_wdiget::setData(int humidity)
{
hum = humidity;
// qDebug() << hum;
syn_hum_charts();
}
void hum_wdiget::syn_hum_charts()
{
qDebug() << "syn_hum_charts called with hum = " << hum;
second++;
series_hum->append(second, hum);
chart_hum->update();
view_hum.repaint(); // 手动触发图表重绘
axis_hum->setRange(second - 10, second + 10); // 假设我们希望显示最近5秒内的数据
// 强制处理未处理的事件,有助于确保视图及时更新
QCoreApplication::processEvents();
qDebug() << "Chart range: " << axis_hum->min() << "-" << axis_hum->max();
qDebug() << "Data points: " << series_hum->count();
qDebug() << "syn_hum_charts " << hum;
}
//创建
void hum_wdiget::create_hum_charts()
{
//设置折线
series_hum->setName("湿度");
series_hum->setPointLabelsVisible(true); //设置显示数字
series_hum->setPointsVisible(true); //设置显示点
series_hum->setPointLabelsFormat("@yPoint"); //设置只显示y轴
series_hum->append(1, 20);
series_hum->append(2, 30);
series_hum->append(3, 40);
series_hum->append(5, 20);
series_hum->append(6, 20);
//设置坐标轴
axis_hum->setRange(0, 10);
axis_hum->setTitleText("时间(秒)");
ayis_hum->setRange(0, 100);
ayis_hum->setTitleText("湿度(百分比)");
//创建表
chart_hum = new QChart();
chart_hum->setTitle("湿度折线");
chart_hum->addAxis(axis_hum,Qt::AlignBottom); //x轴添加到底部
chart_hum->addAxis(ayis_hum, Qt::AlignLeft); //y轴添加到左侧
chart_hum->setMargins(QMargins(10, 10, 10, 10));
chart_hum->legend()->setVisible(true);
chart_hum->addSeries(series_hum);
//序列添加到坐标轴
series_hum->attachAxis(axis_hum);
series_hum->attachAxis(ayis_hum);
//设置视图
view_hum.setChart(chart_hum);
view_hum.setRenderHint(QPainter::Antialiasing);
// 将视图添加到布局中)
vbox_hum->addWidget(&view_hum);
setLayout(vbox_hum);
// 调整视图大小以适应其内容
view_hum.fitInView(chart_hum->plotArea(), Qt::KeepAspectRatio);
}
//初始化
void hum_wdiget::char_hum_init()
{
// widgt = new Widget();
timer = new QTimer(this);
chart_hum = new QChart();
series_hum = new QLineSeries();
vbox_hum = new QVBoxLayout();
axis_hum = new QValueAxis;
ayis_hum = new QValueAxis;
}
hum_wdiget::~hum_wdiget()
{
delete ui;
}
void hum_wdiget::setPort(int newPort)
{
port = newPort;
}
void hum_wdiget::setHum(int newHum)
{
hum = newHum;
}
int hum_wdiget::getPort() const
{
return port;
}
int hum_wdiget::getHum() const
{
return hum;
}