13

私はこれをやろうとしました:

connect(this, SIGNAL(signalClicked(int&)),  classA, SLOT(doWork(int&)));

しかし、私はタイトルのメッセージを受け取ります。だから私はインターネットを探索しましたが、どちらも機能しないこのソリューションを思いつきました:

 qRegisterMetaType<int&>("Type");
 connect(this, SIGNAL(signalClicked(Type)),  classA, SLOT(doWork(Type)));

エラー: 'qRegisterMetaType(const char[5])' の呼び出しに一致する関数がありません</p>

解決策はありますか?

4

1 に答える 1

25

Qt が引数をキューに入れようとしている場合、それは接続がスレッド間であることを意味します。これは、const 以外の参照では機能しません。

これを回避するために reference_wrapper を使用できますが、設計を再検討することを強くお勧めします。シグナル/スロット接続で参照によって値を渡すことはお勧めできません。

于 2013-06-13T09:34:57.473 に答える