Anzeige:
Ergebnis 1 bis 8 von 8

Thema: QProgressDialog für werte > int ?

  1. #1
    Registrierter Benutzer
    Registriert seit
    24.08.2004
    Beiträge
    749

    QProgressDialog für werte > int ?

    Hallo allerseits,
    ich habe folgendes Problem:

    Ihc laufe eine schleife z.B 500 000 mal durch.
    Ich habe einen ProgressDialog der diesbezüglich upgedated werden soll.
    Als Maximalwert sind aber nur int - werte zugelassen für den Dialog. Ich könnte natürlich hergehen und eine if-Abfrage mit Modulo Rechnung in die Schleife hauen so dass z.B bei jedem 500sten durchlauf um eins der dialog inkrementiert wird. Das raubt mir aber in der schleife saftig Zeit. Ich brauche es eben performant.

    Hat jemand ne Idee oder sehe ich vor Lauter Bäumen den Wald kaum?
    Ich vermute im Moment dass ich ohne die Abfrage keine Chance habe....

    Gibt es vielleicht sowas wie einen QProgressDialog wo nur hin und hergependelt wird so dass der user sieht dass was läuft?

    Ich danke für jegliche Hilfe!

  2. #2
    Registrierter Benutzer
    Registriert seit
    31.08.2002
    Ort
    Berlin
    Beiträge
    128
    also dein problem seh ich noch nicht so deutlich ist die max. grenze zu hoch für deine progressbar?
    wenn ja dann schifte doch den wert nach rechts und runde es mittels qRound() sollte dann ziemlich schnell gehen.

    Gruss,
    xmarvel

  3. #3
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Ein pendelnder Balken kann man mit Maximum == 0 erreichen.

    Welche Operation braucht bei dir mehr als 2 Mrd Schritte?

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  4. #4
    Registrierter Benutzer
    Registriert seit
    24.08.2004
    Beiträge
    749
    2 Mrd? ist den der Wertebereich für int nicht bei 65535 ? (16 bit) ? schlagt mich wenn ich mich irre bevor ich jetzt wild rumrunde bzw. rechne....raubt denn die aktualisierung der ProgressBar oder des ProgressDialogs viel Zeit? Bin mir unsicher aber bei mir raubte das immer einige 10tel millisekunden . Auch die Verwendung eines nur pendelnden Balken ruft dieses delay auf. Hat jemand erfahrung? Irgendwo ist es ja klar dass es mehr Zeit kostet...was wäre denn eine performante Alternative? Evtl. ein statischer Dialog der nur eine Message beinhaltet?
    Würde es mit einem animierten Gif funktionieren? Ich meine so als Bild des pendelnden Balkens? Nur so ne (dumme) Frage...
    Geändert von Mat (07-08-2006 um 19:34 Uhr)

  5. #5
    Registrierter Benutzer Avatar von peschmae
    Registriert seit
    14.03.2002
    Ort
    Schweizland
    Beiträge
    4.549
    Ints sind im Normalfall 32bit.

    Ich weiss nicht wie das genau gelöst ist in Qt - kannst ja mal beides Performancemässig vergleichen (update bei jedem Schleifenschritt oder Update bei jedem 100tsten oder sowas). Dann weisst dus

    MfG Peschmä
    The greatest trick the Devil ever pulled was convincing the world he didn't exist. -- The Usual Suspects (1995)
    Hey, I feel their pain. It's irritating as hell when people act like they have rights. The great old one (2006)

  6. #6
    Registrierter Benutzer
    Registriert seit
    24.08.2004
    Beiträge
    749
    würde es vielleicht was bringen den dialog in einen eigenen thread zu packen?

  7. #7
    Administrator Avatar von anda_skoa
    Registriert seit
    17.11.2001
    Ort
    Graz, Österreich
    Beiträge
    5.477
    Den Dialog auf keinen Fall, GUI wird nur im EventloopThread unterstützt.

    Du könntest die Berechnung/Verarbeitung in einem Thread machen

    Oder vielleicht mit einem Timer, der zB alle 100ms den Progress updated

    Ciao,
    _
    Qt/KDE Entwickler
    Debian Benutzer

  8. #8
    Registrierter Benutzer
    Registriert seit
    18.03.2005
    Beiträge
    211
    Glaub du hasst eher nen konzeptionelles problem ^^

    wenn du in jedem schleifendurchlaauf deiner berechnung ne grafikfunktion (Prozessbar) aufrufst ... wird das bei laengeren sachen nie performant ^^

    und wie anda_skoa schon andeutet, wenn deine berechnung ned im GUI thread laeuft musst eh entkoppeln (Signal / Slots in der QT4 sollten das scho automatisch machen)

    Aber da auch vorsicht walten lassen .... aller 100ms einmal aktualisieren langt fuer den usder scho ... alternativ vielleicht nur wenn sich der balken nen ganzes prozent verschiebt.

    Die berechnungen dazu sind wiederum nich sooo aufwendig (im gegensatz zum dialog updaten) ....

    Ciao ...

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •