在Qt中传递结构信号

Sid*_*411 4 c++ qt qt-signals

我想在Qt中发送一个带有信号的结构.我怎样才能做到这一点?我知道如何用信号发送整数,字符串,图像等,但与结构部分混淆.我读了一些帖子,发现了Q_DECLARE_METATYPE(),但我不明白如何使用它.

typedef struct
{
    int EmpId;
    QString Name; 
} StandardData; 

class Data::public QObject
{
    Q_DECLARE_METATYPE(StandardData);

    signals:
        void SignalData(const StandardData &f_objStandardCan);
}
Run Code Online (Sandbox Code Playgroud)

我得到的错误1.非命名空间范围类中的显式特化.2.模板的专用化必须出现在命名空间范围3中.struct QMetaTypeId使用不同的访问权重新声明.有人可以告诉我哪里出错了.

Dan*_*urn 9

错误是因为Q_DECLARE_METATYPE的使用在您的类声明中.它必须在任何类或名称空间之外.你只需要像这样移动它:

typedef struct
{
  int EmpId;
  QString Name; 
} StandardData;

Q_DECLARE_METATYPE(StandardData);
Run Code Online (Sandbox Code Playgroud)