PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : QProgressDialog global ?



Mat
01-08-2006, 20:56
Hallo,

ich habe mehrere Funktionen die alle am QProgressDialog beteiligt sein sollten.

Leider weiß ich nicht wie ich den dialog über mehrere Funktionen hinweg am leben halten soll...
eigentlich muss ich ja den dialog global halten. Damit muss ich doch aber einen Pointer auf dem Heap alloziieren oder? Also mir bleibt nichts anderes übrig als:
im header:


QProgressDialog *progress;

und im cpp:


//dies geschieht in der ersten funktion damit der pointer
//global bleibt ???
progress = new QProgressDialog(...);


Ja und jetzt einfach in den anderen Funktionen nur über



progress->setValue(...)

den neuen wert setzen???

Das Problem ist das zerstören des Dialogs nach Ablauf. Da es ja ein Heap-Pointer ist und an das Parent gebunden ist - dieses aber Existent bleibt muss ich doch zwangsläufig nach dem fertigen Ablauf ein


delete progress;


aufrufen?

Kann mir jemand helfen und mich an die Wand klatschen wenn ich völlig falsch rangehe?

Danke

anda_skoa
02-08-2006, 13:02
Es gibt normalerweise immer einen übergeordneten Block, im schlechtesten Falle die main() Funktion, aber normalerweise ein Hauptfenster oder ähnliches.

Dort den Dialog anlegen und an alle Benutzer übergeben

Edit: oder aus den Benutzern heraus den Progress mittels Signal nach außen leiten und an einer zentralen Stelle an den Dialog übergeben.

Ciao,
_

Mat
02-08-2006, 19:21
mein problem ist dass ich den progress von klassenmethode zu klassenmethode übergeben müsste.
also so:



QProgressDialog *prc = new QProgressDialog(...);
Class1 *c = new Class1();

ret = c->method1(prc);
ret2 = c->method2(prc);

anda_skoa
03-08-2006, 21:29
Wie gesagt kannst du auch in Class1, sofern es ein QObject ist, ein Signal hinzufügen, daß du außerhalb mit dem QProgressDialog verbindest

Ciao,
_