[gelöst] Qt 4.3 - QWizard/QWizardPage

Alles rund um die Programmierung mit Qt
Antworten
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

[gelöst] Qt 4.3 - QWizard/QWizardPage

Beitrag von CSchirner »

Hallo Qt-Gemeinde,

ich hab seit längerem n Problem mit dem QWizard... bzw mit der QWizardPage.

Ich habe eine WizardPage die 8 QComboBoxen, in 2 Groupboxes aufgeteilt beinhaltet


Jetzt soll der "weiter" button erst verfügbar sein, wenn in jeder ComboBoxgruppe mindestens einwas ausgewählt ist...

Laut der Dokumentation kann man das mit isCompleted() prüfen, bzw selbst implementieren...

Dies hab ich getan..

Code: Alles auswählen

bool WP_InOut::isComplete(void)
{

	unsigned int unCount = 0;

	QList<QComboBox*> comboIn = objInGroupBox->findChildren<QComboBox*>();
	foreach(QComboBox* objCombo, comboIn)
	{
		unCount += objCombo->currentText().toInt();
	}

	if(unCount == 0) return false;

	unCount = 0;

	QList<QComboBox*> comboOut = objOutGroupBox->findChildren<QComboBox*>();
	foreach(QComboBox* objCombo, comboOut)
	{
		unCount += objCombo->currentText().toInt();
	}

	if(unCount == 0) return  false;

return true;
}
und die ComboBoxen lasse ich das SIGNAL aufrufen completeChanged(), das laut doku dann isComplete prüft und bei "true" die Buttons freigibt...

connect(comboTemp, SIGNAL(currentIndexChanged(int)), this->parent(), SIGNAL(completeChanged()));


Dennoch sind meine Buttons ständig "aktiviert"....

Hab keine Idee mehr an was das liegen könnte...



Vielen Dank schonmal für eure Antworten

MFG
CSchirner[/code]
Zuletzt geändert von CSchirner am 18. Juli 2007 13:36, insgesamt 1-mal geändert.
macman
Beiträge: 1738
Registriert: 15. Juni 2005 13:33
Wohnort: Gütersloh
Kontaktdaten:

Beitrag von macman »

QWizard ist ganz neu, da werden nicht viele Erfahrungen mit haben. Könnte auch sein das es einfach ein Bug ist. Betrachte dich als Vorreiter und nun such den Fehler :-)
Die deutsche Schriftsprache ist case-sensitive. Außerdem gibt es eine Interpunktionsnorm. Wenn manch einer seine Programme genauso schlampig schreibt, wie sein Posting hier, dann sollte er es lieber bleiben lassen.
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

Such den fehler schon länger ;D

Ich hab auch schonmal geschaut... wenn ich nen Breakpoint auf isComplete setze, wird der nicht aufgerufen...

Wenn ich mein isComplete als Slot definiere, und per connect den Comboboxen bei change den slot aufrufen lasse, wird dieser aufgerufen...

Doch das bringt mir nix... brauch dieses completeChanged für den QWizard :/

Das is ... nervig ;D
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag von NoobSaibot »

in der Doku ist es eine const Methode.
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

oh hups... .. warum muss das in der doku auch am ende stehen (das "const")

Trotz dem const bool isComplete(void) funktioniert es nicht...

Habe das geprüft mit einen breakpoint in der funktion isComplete(void)
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag von NoobSaibot »

das const soll ja auch am ende stehen. die methode ist const, nicht der bool wert.
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

nagut... überredet ;D
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag von NoobSaibot »

und lies am besten noch die doku zu der funktion isComplete() genau durch.

Code: Alles auswählen

If you reimplement this function, make sure to emit completeChanged() whenever the value of isComplete() changes, to ensure that QWizard updates the enabled or disabled state of its buttons.
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

Naja ich hab ja extra beim ändern der combobox (was ne änderung des isComplete nach sich zieht), das completeChanged() aufgerufen.

connect(comboTemp, SIGNAL(currentIndexChanged(int)), this, SIGNAL(completeChanged()));


Das sollte doch so passten... oder?
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag von NoobSaibot »

ich würde es so machen wie in der doku beschrieben.
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

Hm dann versteh ich net ganz wie die das meinen, das ichs implementieren soll :/
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag von NoobSaibot »

wo ist das problem?
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

Ich weiss nicht wie ich das dann implementieren soll, das die Buttons erst freigegeben werden, wenn meine Kriterien erfüllt sind...

Bzw wann das isComplete aufgerufen wird, bzw geprüft wird und wann ich das completeChanged "emitten" soll
NoobSaibot
Beiträge: 99
Registriert: 27. Januar 2005 15:55

Beitrag von NoobSaibot »

An sich erscheint mir dein Vorgehen schlüssig. Kann dir da leider nicht weiter helfen.
CSchirner
Beiträge: 63
Registriert: 14. Dezember 2006 11:05

Beitrag von CSchirner »

okay jetzt funktionierts

bool WP_InOut::isComplete(void) const

hatte vorher const bool WP_InOut::isComplete(void)


....


mir war bisher noch nicht klar, das man wenn eine methode const ist, das dahinter schreibt... ich sollte mir das mal genauer anguggn... was mir bisher nicht bekannt :/
Antworten