如何处理QT中动态添加的QObject的SIGNAL(带参数)

How to deal with the SIGNAL(with arguments) of dynamically added QObject in QT?

本文关键字:QObject 参数 添加 SIGNAL 何处理 处理 QT 动态      更新时间:2023-10-16

我发现QSignalMapper可以处理带有NO参数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);
    }
};