1. 程式人生 > >以自定義結構或類作為訊號和槽的引數

以自定義結構或類作為訊號和槽的引數

        在QT中如何用自定義結構作為訊號和槽的引數,在網上查了一通,用人說要用qRegisterMetaType註冊結構,還有說要為結構使用巨集Q_DECLARE_METATYPE。不知道是不是他們的版本太舊。經本人驗證,既無需註冊,也無需使用巨集,就可使用結構或類作為訊號和槽的引數。我使用的版本為Qt Creator 4.7.0, 編譯構件是Qt 5.11.1 MinGW 32 bit

1.定義結構

typedef struct
{
    int type;

}Struct_Args;

2.訊號

void PostSignal_Struct(Struct_Args);

3.槽函式

void handle_Signal_Struct(Struct_Args args);

4.連線訊號和槽

connect(this, SIGNAL(PostSignal_Struct(Struct_Args)), this, SLOT(handle_Signal_Struct(Struct_Args)));

以類作為訊號和槽的引數,方法類同。

程式碼同時演示了以指標和引用作為訊號和槽的引數。