3

Qtでダウンローダを作りたいです。QSignalMapper を使用すると問題が発生します。

QNetworkReply、downloadProgress(qint64、qint64) にシグナルがあります。ダウンロード タスクが多いので、QSignalMapper を使用してシグナルを処理します。しかし、どうすれば (qint64,qint64) を自分の関数に渡すことができますか?

ID をスロットに渡しましたが、失われました (qint64,qint64)

connect(t->reply, SIGNAL(downloadProgress(qint64,qint64)), signalMapper, SLOT(map()));
signalMapper->setMapping(t->reply, id);

それを解決する方法は?

4

1 に答える 1

2

あなたはそうしない。から: http://qt-project.org/doc/qt-5.0/qtcore/qsignalmapper.html

このクラスは、パラメーターなしのシグナルのセットを収集し、シグナルを送信したオブジェクトに対応する整数、文字列、またはウィジェット パラメーターを使用してそれらを再送信します。

そのため、QSignalMapper はパラメーターを他のスロットに転送するようには設計されていません。それをしたい場合は、すべてを手動で接続するか、この男が説明したことを行う必要があります: QSignalMapper を使用して、複数のパラメーターを持つ信号を再送信できますか? 特定のケースに合わせて QSignalMapper を再実装します。

Qt 5 を使用している場合は、これを行うこともできます: QSignalMapper を使用しているときにソース信号のパラメーターを保持する方法は?

于 2013-06-18T13:48:47.643 に答える