Seite 1 von 1

[gelöst] checkboxen in unterschiedlicher reihenfolge?

Verfasst: 25. September 2008 19:42
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!

Verfasst: 25. September 2008 19:45
von kaazr
Wie wäre es mit einer Zufalls-Zahl? Die wird generiert und dementsprechend dann in der Reihenfolge zum Layout hinzugefügt.

Verfasst: 25. September 2008 20:32
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?!?

Verfasst: 25. September 2008 21:42
von upsala
Indem du alle Daten in einer passenden Struktur ablegst...

Verfasst: 3. Oktober 2008 21:28
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]

Verfasst: 6. Oktober 2008 08:00
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