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 に答える