前提: 信号-槽函数中 qt中 信号是基本数据类型,如 int double 等,我想传递一个自定义的结构体要如何做呢?
主要就是:先声明新结构体,再注册,然后按照如int类消息正常使用即可,
步骤如下
1. 头文件中
(1)添加头文件
#include <QMetaType>
(2)注册元对象 数据发送结构体--信号槽2024.6.1
Q_DECLARE_METATYPE(li_data)
注意: li_data是自定义的结构体
struct liv_data{double dwidth;double dheight;
}
(3)定义消息
signals:void send_data_signals(li_data);//2024.6.19
(4)定义槽函数
private slots:void get_data_signals(li_data);
2.cpp中
(1)构造函数中
//需要注册结构体qRegisterMetaType<li_data>("li_data");connect(this, &CShoweUI::send_data_signals,this, &CShoweUI::get_data_signals);
然后就和正常的消息一样使用就行了。
(2)
void CShowUI::get_edata_signals(li_data src)
{ui->ang_label->setText(QString::number(src.dheight,'f',1));ui->ngxiang_label->setText(QString::number(src.dwidth,'f',1));//里程暂时先不显示
}