QT自定义结构体struct—— 基于QVariant 类 用于信号与槽

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);
    //!
}
发布了127 篇原创文章 · 获赞 3 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_37631516/article/details/105728185
今日推荐