2

这个问题在我脑海里想了很多天,但直到现在我才明白

如果我尝试发送结构信号说

struct radarStruct
{
    unsigned char *Data;
    unsigned int rate;
    unsigned int timeStamp;
    float timeSec;
};

我应该发出这样的信号吗

signals:
    void radarGeneratorData(const radarStruct &);

或者

signals:
    void radarGeneratorData(radarStruct *);

更多: unsigned char *Data 怎么样,信号是否会对其进行深层复制?

类似于 unsigned char *data 我如何发送信号。

朋友请帮我解决这个问题,通过信号和插槽机制发送结构的最佳方式..

提前致谢

4

1 回答 1

4

这主要取决于您的要求。

如果要将结构发送到另一个对象并“共享”该结构,则需要将该结构作为指针发送,以便在源处反映更改。如果不是,那么您希望将其作为 const ref 发送。

对于任何一种方法,请记住您需要Q_DECLARE_METATYPE(YourStructType)在信号/槽参数中使用结构之前。

至于何时发生深拷贝/何时发生例程回调等效过程,您可以通读

qt 插槽中的信号失败

单线程通信和跨线程通信本身不同,输出将再次取决于您的使用情况。

于 2013-03-22T10:34:53.383 回答