Как бороться с СИГНАЛОМ (с аргументами) динамически добавляемого QObject в QT? - PullRequest
0 голосов
/ 26 февраля 2012

Я обнаружил, что QSignalMapper может иметь дело с SIGNAL с НЕТ Аргументов , но как мне справиться с некоторыми SIGNAL с его аргументами.

На самом деле проблема в том, что я создал несколько QProgressBar динамически, и я хотел использовать QNetworkReply downloadProgress(qint64, qint64) для обновления панели, затем возникла проблема.

1 Ответ

1 голос
/ 26 февраля 2012

Проблема в том, что слоты 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);
    }

};
...