我发现QSignalMapper
可以使用 NO Arguments 来处理SIGNAL
s,但我怎样才能处理SIGNAL
一些QProgressBar
参数。
实际问题是,我已动态创建了一些QNetworkReply
,并且我想使用downloadProgress(qint64, qint64)
的{{1}}来更新条形码,然后问题就出现了。
答案 0 :(得分:1)
问题在于QNetworkReply's downloadProgress(qint64, qint64)
和QProgressBar
的插槽无论如何都是无法匹配的。在这种情况下,信号映射器不会帮助你,这太具体了。
您必须自己创建适配器类:
class Adapter: public QObject
{
Q_OBJECT
public:
explicit Adapter(QProgressBar* bar, const QNetworkReply* reply):QObject(bar)
{
connect(reply, SIGNAL(downloadProgress(qint64,qint64)), SLOT(changeProgress(qint64,qint64)));
}
private slots:
void changeProgress(qint64 progress, qint64 total)
{
QProgressBar* bar = static_cast<QProgressBar*>(parent());
bar->setMaximum(total);
bar->setValue(progress);
}
};