[gelöst] checkboxen in unterschiedlicher reihenfolge?

Alles rund um die Programmierung mit Qt
Antworten
dramen
Beiträge: 5
Registriert: 8. April 2008 03:02
Wohnort: Wien

[gelöst] checkboxen in unterschiedlicher reihenfolge?

Beitrag von dramen »

Hallo!

Also, ich möchte ein kleines Quiz erstellen welches aus einer Frage und vier Checkboxen (=Antworten) besteht.
Das sieht in etwa folgendermaßen aus:

Was ist die Hauptstadt von Deutschland?

- Berlin
- Wien
- Bonn
- London
(Anm.: die Bindestriche sollen checkboxen sein)

Und zwar möchte ich, dass bei jedem Programmstart (oder jedem neuen Spielbeginn) die Reihenfolge der Städte bzw. der Checkboxen unterschiedlich ist.

Kann mir jemand einen Tipp geben wie ich das mit der Reihenfolge am besten bewerkstelligen könnte?? - Mir fallen unterschiedliche Lösungsansätze ein (z.B. Arrays, qrand,...), aber vielleicht hat jemand etwas mehr Erfahrung damit?!?

Vielen Dank!
Zuletzt geändert von dramen am 3. Oktober 2008 21:29, insgesamt 1-mal geändert.
kaazr
Beiträge: 15
Registriert: 25. August 2008 21:16

Beitrag von kaazr »

Wie wäre es mit einer Zufalls-Zahl? Die wird generiert und dementsprechend dann in der Reihenfolge zum Layout hinzugefügt.
QT?
dramen
Beiträge: 5
Registriert: 8. April 2008 03:02
Wohnort: Wien

Beitrag von dramen »

kaazr hat geschrieben:Wie wäre es mit einer Zufalls-Zahl? Die wird generiert
... okay. Das könnte ich zum Beispiel mit qrand() machen.
kaazr hat geschrieben:und dementsprechend dann in der Reihenfolge zum Layout hinzugefügt.
Diesen Teil versteh' ich nicht ganz. Wie ordne ich die Zahlen den jeweiligen Stadtnamen zu, ohne dass diese sichtbar sind?!?
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Indem du alle Daten in einer passenden Struktur ablegst...
dramen
Beiträge: 5
Registriert: 8. April 2008 03:02
Wohnort: Wien

Beitrag von dramen »

Code: Alles auswählen

void MainWindowImpl::frage() {
	srand(time(NULL));
	QString deutschland[4] = {"Wien","Berlin","Bonn","Paris"};
	int zufall[4];
	
	for (int i=0;i<4;i++) {
		bool vorhanden;
		int zahl;
		do {
			vorhanden = false;
			zahl = rand()%4;
			for (int j=0;j<i;j++) {
				if (zufall[j]==zahl) {
					vorhanden = true;
					break;
				}
			}
		} while(vorhanden);
		zufall[i]=zahl;
		check = new QCheckBox(deutschland[zahl],this);
		verticalLayout->addWidget(check);
	}
so wollte ich das haben. eventuell etwas einfacher :)

vielen dank für eure tipps.[/code]
Ginsengelf
Beiträge: 79
Registriert: 2. Mai 2007 10:21

Beitrag von Ginsengelf »

Moin, noch kürzer wird es, wenn du die Texte in einen Vector o.Ä. steckst, und dann mit std::random_shuffle draufhaust. Der würfelt dir dann deinen Container zufällig durcheinander.

Ginsengelf
Antworten