qt 采用信号与槽传递结构体的问题

sinat_16722523 2018-07-27 07:16:56
首先需要传递的结构体是:
struct vframe
{
int index;
char *data;
unsigned int data_len;
unsigned int pix_width;
unsigned int pix_height;
unsigned int pix_format;
};

Q_DECLARE_METATYPE(vframe)

信号是void postData(QVariant dataVar);

发送信号的该类构造函数里添加了
vframe askData;
QVariant DataVar;
DataVar.setValue(askData);
qRegisterMetaType<QVariant>("QVariant");

connect函数是connect(mod->capt,SIGNAL(postData()),this,SLOT(save_image(QVariant)));

但是运行过程中报错了,错误代码是
/usr/local/Trolltech/Qt-4.8.5/include/QtCore/qmetatype.h:169: error: 'qt_metatype_id' is not a member of 'QMetaTypeId<vframe*>'
static inline int qt_metatype_id() { return QMetaTypeId<T>::qt_metatype_id(); }
^
各位大神到底应该怎么改呢
...全文
698 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
sinat_16722523 2018-07-30
  • 打赏
  • 举报
回复
引用 1 楼 QtUnremitting 的回复:
需要借助的头文件:

#include <QMetaType>
#include <QVariant>

在一个头文件中声明自定义结构体:

struct CustomStruct{
string name;
string sex;
int years;
.......
.......
}

在结构体的声明后面加一句宏:

Q_DECLARE_METATYPE(CustomStruct)

使用QVariant存储自定义结构体类型(此语句最好放在反射该信号的函数中,对结构体的声明可以放在类的私有修饰符下):

CustomStruct myStruct;
QVariant v;
v.setValue(myStruct);

在使用信号槽所在的类的构造函数中注册QVariant类型,使得在信号槽机制中能接受QVariant类型作为参数:

qRegisterMetaType<QVariant>("QVariant");

最后,使用QObject::connect函数连接信号与槽,即可完成整个过程;

这是网上找的吧,我就是参考这个,结果有问题
QtUnremitting 2018-07-27
  • 打赏
  • 举报
回复
需要借助的头文件:

#include <QMetaType>
#include <QVariant>

在一个头文件中声明自定义结构体:

struct CustomStruct{
string name;
string sex;
int years;
.......
.......
}

在结构体的声明后面加一句宏:

Q_DECLARE_METATYPE(CustomStruct)

使用QVariant存储自定义结构体类型(此语句最好放在反射该信号的函数中,对结构体的声明可以放在类的私有修饰符下):

CustomStruct myStruct;
QVariant v;
v.setValue(myStruct);

在使用信号槽所在的类的构造函数中注册QVariant类型,使得在信号槽机制中能接受QVariant类型作为参数:

qRegisterMetaType<QVariant>("QVariant");

最后,使用QObject::connect函数连接信号与槽,即可完成整个过程;
QtUnremitting 2018-07-27
  • 打赏
  • 举报
回复
以上回答仅供参考

16,215

社区成员

发帖
与我相关
我的任务
社区描述
Qt 是一个跨平台应用程序框架。通过使用 Qt,您可以一次性开发应用程序和用户界面,然后将其部署到多个桌面和嵌入式操作系统,而无需重复编写源代码。
社区管理员
  • Qt
  • 亭台六七座
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧