【问题标题】:How to deal with the SIGNAL(with arguments) of dynamically added QObject in QT?QT中动态添加的QObject的信号(带参数)如何处理?
【发布时间】:2012-02-26 10:11:15
【问题描述】:

我发现QSignalMapper 可以处理带有 NO ArgumentsSIGNALs,但是我如何处理带有它的参数的一些 SIGNALs。

真正的问题是,我动态创建了一些QProgressBar,我想用QNetworkReplydownloadProgress(qint64, qint64)来更新bar,然后问题就出现了。

【问题讨论】:

  • 为什么要使用QSignalMapper
  • @Lol4t0 Nonono..我刚google找到的,不用用,好像解决不了我的问题

标签: c++ qt signals signals-slots


【解决方案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);
    }

};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多