我想通过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);
如何解决?
答案 0 :(得分:2)
你没有。来自: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?