8

元のコードでは、QStringList をシグナルからスロットに渡し、QList を返しました。すべてうまくいきましたが、QStringList と QList の両方を 2 つの異なるサブクラス化された QObject に変更する必要がありました。それ以来、「ここで最初に合成されたメソッドが必要です」などのエラーを受け取ったり、エラーメッセージなしで単にクラッシュしたりしています。

qt はキュー接続で渡されたすべての引数をコピーし、qobject はコピーできないことを理解しています。したがって、qobject を返す代わりに、シグナルを発信する前に両方の qobjects を作成すると考えました。次に、各オブジェクトへの参照を渡し、そのうちの 1 つをスロット関数で変更して、戻り値を無効にします。残念ながら、シグナルとスロット関数をどのようにコーディングしても、アプリは依然としてクラッシュします。シグナル/スロット関数をコーディングしてそれらを接続し、両方の qobject を引数として渡すか、qobject を返すにはどうすればよいですか?

MyQObject1 obj1("a","b","c");
MyQObject2 obj2();
emit sendSignal(&obj1, &obj2);
// or
MyQObject2 obj2 = emit sendSignal(&obj1);

connect(someObj, SIGNAL(sendSignal(const QObject&)), this, SLOT(receiveSignal(const QObject&)));

receiveSignal() 関数は、qobject を直接作成または変更しません。最初にqobjectsを別の関数に渡す必要があり、次にobj2を変更するか、それを作成して返します。コード例は大歓迎です。

4

1 に答える 1