Hallo,
Om enkele downloads te weergeven heb ik een QTreeWidget gebruikt. Toen kwam ik erachter dat je een widget kan toevoegen aan een QTreeWidgetItem d.m. QTreeWidgetItem::setItemWidget(). Nu wil ik een QProgressBar toevoegen aan een QTreeWidgetItem, om het download process voor de gebruiker zichtbaar te maken. Dit is gelukt.
Echter, er gebeurd niks. De progressbar flikkert een klein beetje. Als de download voltooid is, dan gaat deze progressbar ineens wel op 100%. Toen ik voorheen het downloadproces met setText() in de treewidgetitem liet weergeven, gebeurde eigenlijk hetzelfde. Eerst niks, bij 100% kreeg je pas de waarde te zien, en bij 0% overigens ook.
Is dit een bug bij de QTreeWidgetItem?
De def om het downloaden te starten:
def download(self):
download = self.downloadQueue[self.currentDownload]
progressbar = QProgressBar(self)
progressbar.setRange(0,100)
progressbar.setValue(0)
item = QTreeWidgetItem(self.ui.tree_downloads)
item.setText(0, download["filename"])
item.setText(1, "Queue")
item.setText(3, download["url"])
self.ui.tree_downloads.setItemWidget ( item, 2, progressbar )
self.downloadQueue[self.currentDownload]["progressbar"] = self.ui.tree_downloads.itemWidget(item, 2)
self.downloadQueue[self.currentDownload]["item"] = item
self.setRequest(download["url"])
En de code om de progressbar in werking te stellen:
def updateProgress(self, done, total):
if done > 0:
percent = (done / total) * 100
else:
percent = 0
download = self.downloadQueue[self.currentDownload]
download["item"].setText(1, "Downloading")
progressBar = download["progressbar"]
progressBar.setRange(done, total)
progressBar.setValue(done)
debug().info("vidiqatch.updateProgress: progress "+str(done)+"/"+str(total))
if download["savetype"] == "toFile":
self.f.write(self.http.readAll().data())
De debug().info() laat overigens wel het process zien in de terminal.
Heeft iemand een idee wat er mis is?