我发现QSignalMapper可以不带任何参数地处理SIGNAL,但是如何处理带有参数的SIGNAL

实际的问题是,我动态创建了一些QProgressBar,并且我想使用QNetworkReplydownloadProgress(qint64, qint64)更新栏,然后出现了问题。

最佳答案

问题是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);
    }

};

关于c++ - 如何处理QT中动态添加的QObject的SIGNAL(带有参数)?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9452223/

10-09 07:35