我想做一个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);如何解决?
发布于 2013-06-18 21:48:48
你不需要。来自:http://qt-project.org/doc/qt-5.0/qtcore/qsignalmapper.html
这个类收集一组无参数信号,并使用与发送信号的对象相对应的整数、字符串或小部件参数重新发出它们。
因此,QSignalMapper不是为您将参数传输到其他插槽而设计的。如果你想这样做,你需要手动连接所有东西,或者按照这个人所说的那样做:Can QSignalMapper be used to re-emit signals with multiple parameters?,然后针对你的特定情况重新实现QSignalMapper。
如果你使用Qt 5,你也可以这样做:How to keep the source signal's parameters while using QSignalMapper?
https://stackoverflow.com/questions/17170143
复制相似问题