qt文件获取到数据后将数据更新到图表
void hum_wdiget::syn_hum_charts(int data_hum)
{
qDebug() << "syn_hum_charts called with hum = " << data_hum;
second++;
series_hum->append(second, data_hum);
chart_hum->update();
qDebug() << "syn_hum_charts " <<data_hum;
}
但是运行后图表没有任何变化,但是打印测试数据都正常
源码
#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);
// 设置定时器间隔为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(hum);
}
void hum_wdiget::syn_hum_charts(int data_hum)
{
qDebug() << "syn_hum_charts called with hum = " << data_hum;
second++;
series_hum->append(second, data_hum);
chart_hum->update();
qDebug() << "syn_hum_charts " <<data_hum;
}
//创建
void hum_wdiget::create_hum_charts()
{
//设置折线
series_hum->setName("湿度");
series_hum->setPointLabelsVisible(true); //设置显示数字
series_hum->setPointsVisible(true); //设置显示点
series_hum->setPointLabelsFormat("@yPoint"); //设置只显示y轴
//设置坐标轴
axis_hum->setRange(0, 100);
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;
}