Seite 1 von 1

während endlos while schleife GUI nicht bedienbar

Verfasst: 10. März 2007 10:32
von Beginner
Hi,

ich hab ne endlos schleife, die eigentlich darauf warten soll, dass der Benutzer die checkbox false setzt.

Nun ist natürlich während der schleife die GUI nicht bedienbar, gibt es sowas wie bei basic GetEvents() oder so, das immer kurz die GUI wieder aktualisiert ?

MfG
Beginner

Verfasst: 10. März 2007 10:55
von upsala
Ja, QCoreApplication::processEvents(...). Aber ich denke, daß das der falsche Ansatz ist. Die QCheckBox meldet normalerweise per Signal wenn der Status geändert wurde. Arbeite halt damit.

Verfasst: 10. März 2007 11:22
von Beginner
hehe ja, wenn der user die checkbox noch klicken könnte ...
aber die GUI lässt sich ja erst nach ablauf der schleife wieder bedienen ...

bzw. frage zwar den status der checkbox jedes mal in der schleife ab, aber da der user sie nicht mehr bedienen kann ändert sich da nat. nix mehr

Verfasst: 10. März 2007 11:27
von franzf
BITTE schau dir mal DAS essentielle System von Qt an:
Signals and Slots
Du brauchst keine while-Schleife mehr.
Und schau dir auch mal die Basic-Tutorials an, da kriegste für die ganze Materie auch gleich ein besseres Gespür.

Verfasst: 10. März 2007 11:47
von Beginner
^^ ich kenne das prinzip von Signals und Slots ...

in der while schleife soll er nat. solange auch noch daten verarbeiten.

Ich könnte dafür nat. auch nen Thread nehmen ..

wobei ich da das problem hätte, kann ich aus dem Thread selbst Signals versenden?
weil ich müsste ein paar Grafiken parallel mit den aus der while schleife erstellten daten die ganze zeit weiter füttern ...

Edit: sprich es wär mir lieber kein Thread zu nehmen, damit ich weiter auf alle Qt Elemente zugreifen kann

Mal hier Beispielcode (hab ich leider aufm anderen rechner daher grob nachgebaut)

Code: Alles auswählen

int count = 1000000; 
float result;
for (unsigned short i = 0; i < count; i++)
	{
	result = process->next(i);
	graphic->paintNext(result);
	if ( cbStop->isChecked() ) break;
}

Verfasst: 10. März 2007 12:00
von Christian81
upsala hat das doch nun schon beantwortet... :roll:

Verfasst: 10. März 2007 12:09
von Beginner
war gerade noch joggen und muss erstma den anderen rechner und alles hochfahren ^^ werde ich gleich mal testen ... (weil er meinte wär der falsche ansatz dacht ich geht noch anders mal sehen)

Verfasst: 10. März 2007 12:28
von Beginner
äh mhh wo muss ich das processEvents() den hinpacken? bzw. wie benutz ich das?
aus der ui.h file heraus hab ich ja kein zugriff auf die QApplication die in der main gestartet wurde...

und mir nen Pointer der Application in die Widget klasse dafür zu übergeben scheint mir komisch ...

Verfasst: 10. März 2007 12:36
von Christian81

Verfasst: 10. März 2007 15:28
von Beginner
mhhh hat qApp irgendnen Namespace ?
es kam die Meldung qApp undeclared (first use this function)
(each undeclared identifier is reported only once for each function it appears in.)

habs danach noch mit std:: und Qt:: ..

Benutze zwar Qt 3.2 aber da gibt es die globale variable ja angeblich auch

Verfasst: 10. März 2007 15:33
von Christian81
qApp ist in qapplication.h definiert - aber warum in die Doku schauen und nachdenken wenn man hier eh alles vorgekaut bekommt?