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,你也可以这样做:How to keep source signal's parameters while using QSignalMapper?

于 2013-06-18T13:48:47.643 回答