0

現在、シグナルを介してオブジェクトをスロットに渡すことができます。ただし、同じ信号を介してスロットへの参照として同じオブジェクトを渡すことができません

これがオブジェクトとして渡す方法です(これは機能します)

スロット:

void SomMethod(A::Employee hcol);

宣言と登録:

Q_DECLARE_METATYPE(A::Employee);
qRegisterMetaType<A::Employee>();

信号接続

connect(this,SIGNAL(QTUpdateEmployee(A::Employee)),ptrForm,SLOT(EmployeeUpdates(A::Employee)));

今、従業員を参照として渡すことができず、何を試すべきかについての提案がありません.スロットを参照パラメーターに置き換えてみましたが、スロットが呼び出されません。

4

2 に答える 2

2

スロット内のパラメーターを、表示されている値の型ではなく参照型に置き換えることについて言及していますが、信号パラメーターの型を変更することについては言及していません。

シグナルとスロットのメソッド シグネチャは一致する必要があるため、スロットが参照型を期待する場合は、シグナルも一致する必要があります。

connect(this, SIGNAL(QTUpdateEmployee(A::Employee&)), ptrForm, SLOT(EmployeeUpdates(A::Employee&)));

ただし、オブジェクトをシグナルに渡すときは、通常のメソッドと同じように渡すことができます。

emit QTUpdateEmployee(objectValue);
于 2013-06-18T17:35:23.743 に答える