代码之家  ›  专栏  ›  技术社区  ›  Wagmare

发出结构的信号

  •  2
  • Wagmare  · 技术社区  · 12 年前

    这个问题在我脑子里想了很多天,但到现在我还是想清楚了

    如果我试图发送一个结构的信号,比如

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

    我能发出这样的信号吗

    signals:
        void radarGeneratorData(const radarStruct &);
    

    signals:
        void radarGeneratorData(radarStruct *);
    

    更多:关于无符号的char*Data,信号是否会对其进行深度复制??

    类似于无符号char*数据,我可以如何发送信号。

    朋友们请帮我澄清这一点,这是通过信号发送结构的最佳方式;插槽机制。。

    提前通知

    1 回复  |  直到 12 年前
        1
  •  4
  •   Community Mohan Dere    8 年前

    这主要取决于您的要求。

    如果要将结构发送到另一个对象并“共享”该结构,则需要将该结构作为指针发送,以便在源位置反映更改。如果没有,那么您将希望将其作为常量引用发送。

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

    至于何时发生深度复制/何时发生例程回调等效过程,您可以进行通读

    Signaling failure in qt slots

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