前提: 信号-槽函数中 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));
//里程暂时先不显示
}