Nieuws:

Welkom, Gast. Alsjeblieft inloggen of registreren.
Heb je de activerings-mail niet ontvangen?

Auteur Topic: Qt4 QProgressbar update niet  (gelezen 1754 keer)

Qt4 QProgressbar update niet
« Gepost op: 2009/01/15, 17:38:51 »
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?

Re: Qt4 QProgressbar update niet
« Reactie #1 Gepost op: 2009/01/15, 17:52:25 »
Ik werk met PyGTK, niet met PyQT, dus excuseer als ik mis ben :).

Maar met PyGTK is het hetzelfde. Dat komt omdat hij niet tegelijk een taak kan doen (downloaden bijvoorbeeld) en de progressbar vullen. Daarom word pas op het einde van de taak de progressbar in 1 slag gevuld. Ik heb het opgelost met een thread, er bestaan ook wat middeltjes vanuit GTK zelf, maar die werkten niet bij mij. Misschien dat QT er ook zo heeft.

Re: Qt4 QProgressbar update niet
« Reactie #2 Gepost op: 2009/01/15, 18:02:25 »
Hmm Qt kan zeker wel meerdere taken tegelijk doen. Het is dan ook nog eens zo, dat de progressbar normaal wel werkt. Heel goed zelfs. Maar als ik het met setItemWidget toevoeg aan een treewidgetitem, dan werkt het niet.

Een thread zou ik kunnen overwegen, alleen weet ik nu even niet wat ik me er goed bij moet voorstellen. Ik ga er in ieder geval even naar kijken.

Edit
Ik heb maar even een draad aangemaakt op qtforum.org. Daar zijn misschien wat meer mensen die me kunnen helpen :)
Wat ik nog mis is een Nederlands Qt forum. Als ik tijd heb dan wordt dat wellicht mijn volgende project.
http://www.qtforum.org/article/26575/qprogressbar-in-setwidgetitem-doesn-t-work.html
« Laatst bewerkt op: 2009/01/15, 18:24:47 door Koen Bokern »

Offline dvdmeer

  • Lid
    • Python-RandR :: dvdmeer.nl
Re: Qt4 QProgressbar update niet
« Reactie #3 Gepost op: 2009/01/15, 20:43:57 »
Edit
Wat ik nog mis is een Nederlands Qt forum. Als ik tijd heb dan wordt dat wellicht mijn volgende project.

Zeker een goed idee!

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: Qt4 QProgressbar update niet
« Reactie #4 Gepost op: 2009/01/16, 00:37:34 »
daar wil ik wel mod van worden, koen ;) ik ben trouwens ook lid van qtcentre, ik zal daar eens naar je vraag kijken..

edit: geantwoord op qtcentre
« Laatst bewerkt op: 2009/01/16, 01:31:10 door profoX »
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)

Re: Qt4 QProgressbar update niet
« Reactie #5 Gepost op: 2009/01/16, 11:38:22 »
profoX, als je een mooi meisje was, zou ik je omhelzen. Super bedank :D

Re: Qt4 QProgressbar update niet
« Reactie #6 Gepost op: 2009/01/16, 12:03:31 »
profoX, als je een mooi meisje was, zou ik je omhelzen. Super bedank :D
Is 'ie dat dan niet =D

Offline profoX

  • Lid
    • wesley
    • Lionslink
Re: Qt4 QProgressbar update niet
« Reactie #7 Gepost op: 2009/01/16, 14:49:07 »
 :D
Human Knowledge Belongs To The World -- Antitrust (2001)
Nederlandstalige Ubuntu documentatie van Ubuntu-NL (wiki)