Nieuws:

We zijn er weer.

Na lange tijd van afwezigheid zijn we er weer  :laugh:
We hebben alle wachtwoorden gereset, je oude wachtwoord werkt niet meer.Je moet via het "wachtwoord vergeten"-linkje je wachtwoord resetten. Je krijgt hiervoor een mailtje op het adres dat je bij ons geregistreerd hebt.

De komende tijd zijn we nog druk bezig om de rest van de site op te bouwen, dus het kan zijn dat sommige onderdelen (tijdelijk) niet werken.

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

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

Offline Koen Bokern

  • Lid
  • Steunpunt: Nee
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?

Offline Nunslaughter

  • Lid
    • timovwb
  • Steunpunt: Nee
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.

Offline Koen Bokern

  • Lid
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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)

Offline Koen Bokern

  • Lid
  • Steunpunt: Nee
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

Offline Cumulus007

  • Lid
  • Steunpunt: Nee
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
  • Steunpunt: Nee
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)