QT, Pobieranie kilku plików jednocześnie i śledzenie postępów

0

Witam!

Otóż mam taki kod

QNetworkAccessManager * manager = new QNetworkAccessManager(this);
connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(downloadFinished(QNetworkReply*)));
currentDownload = manager->get(request);

connect(currentDownload, SIGNAL(downloadProgress(qint64,qint64)),
         this, SLOT(downloadProgress(qint64,qint64)));

Gdzie downloadProgress śledzi progress danego pobierania. Dane zapisuje w QAbstractTableModel.

QModelIndex index = downloadTable->index(0, 1, QModelIndex());
downloadTable->setData(index, progressPercent, Qt::EditRole);

index = downloadTable->index(0, 2, QModelIndex());
downloadTable->setData(index, fileSizeBeforeDownload, Qt::EditRole);

index = downloadTable->index(0, 3, QModelIndex());
downloadTable->setData(index, speedProgress, Qt::EditRole);

Generalnie problem jest w index([tutaj], x, QModelIndex()), nie wiem jak zapamiętać, który index należy do każdego pobieranego elementu. Mam zapisane dane w komórkach, tylko żeby teraz w downloadProgress aktualizować kazdy element

1

Mniej więcej cie rozumiem ale pomyślmy przez chwilę bo jak rozumiem chodzi ci o to

  • Tworzę request

  • Updateuje sobie model i jak rozpoznać gdzie co i jak powinno iść.

Myślę że sposobów jest parę ale na szybko o tej godzinie hmm.. Możesz robić sobie klasę pośredniczącą która to będzie trzymała dane o konkretnym kawałku modelu czyli

  • Mamy klasę z slotem downloadProgress(i innymi potrzebnymi)

  • Tworzymy je inicjując np. kolumną czy innym kluczem jaki sobie wymarzysz byle byś był w stanie dojsć tym kluczem do miejsca w modelu

  • Przychodzi sygnał o zmianie w pobieraniu, przyjmujesz go, na podstawie klucza który jest polem prywatnym wyciągasz to co ci potrzebne i aktualizujesz.

I to tyle. Te wszystkie obiekty były by w wektorze, i powinny być usuwane po zakończeniu downloadu/awarii. Możesz sobie napisać kontroler któy będzie zarządzał życiem obiektów i może nawet komunikacją z modelem(tak żeby obiekty nie miały bezpośrednio dostępu do modelu)

1 użytkowników online, w tym zalogowanych: 0, gości: 1