1.头文件加#include<QVariant>
#include<QVariant>
2.主.h 文件 声明信号
signals:
void addData(QVariant);//QVariant作参数,传递结构体数据
3 子.h 文件 声明 槽函数
addData_slot(QVariant)
4连接信号与槽
connect(this,SIGNAL(addData(QVariant)),newChart,SLOT(addData_slot(QVariant)));
5.定义结构体(在要解析的槽函数同名 .h 里面)
typedef struct DATA //定义作图的结构体
{
qreal timestamp;
qreal open;
qreal high ;
qreal low ;
qreal close ;
} Data;
6.信号里面定义结构体赋值给 QVariant
Data dataStruct;//定义结构体
dataStruct.timestamp = strList.at(0).toDouble();
dataStruct.open = strList.at(1).toDouble();
dataStruct.high = strList.at(2).toDouble();
dataStruct.low = strList.at(3).toDouble();
dataStruct.close = strList.at(4).toDouble();
//! 结构体 装进QVariant
QVariant variant;
variant.setValue(dataStruct);
emit(addData(variant));
7.槽函数里面解析结构体
void NewChartAxis::Data_slot(QVariant variant)
{
//![1]解析构造体里面的数据
Data d = variant.value<Data>();// variant相当于一个容器放结构体的数据
time = d.timestamp;
open = d.open;
high = d.high;
low = d.low;
close = d.close;
//! [1]
//!画折线图
drawLineChart(time,close);
//!
}