Seite 1 von 1

Feld mit Zufallszahlen im Hauptfenster ausgeben

Verfasst: 11. März 2005 18:26
von Anfänger
Hallo!

Auf folgende Art und Weise habe ich ein Feld erstellt, welches mir Zufallszahlen ausgibt:
void feldBelegung() {
cout << endl;
for (int i=0; i<10; i++)
{ for (int j=0; j<20; j++)
{
feld[j]= ((int)(ceil(((double)rand()/RAND_MAX)*5)));
cout << " " << feld[j];
}
cout << endl;
}

Wie kann ich diese Zahlen nun in einem Hauptfenster:
QWidget* hauptfenster = new QWidget();
hauptfenster->setGeometry(40,60,500,500);

darstellen?!

LG
Anfänger :?:

Verfasst: 14. März 2005 09:57
von FlorianBecker
Hallo,

nur ein Fenster reicht nicht um deinen Text auszugeben. Du bräuchtest noch ein GUI Element mehr, z.B. ein QTextEdit
mit setText() kannst du dann den gewünschten Text dafür setzen und wenn du den TextEdit als Log definierst, kannst du einfach mit append() deine ganzen Zahlenreihen ausgeben.

eigenen Slot definieren mit Zugriff auf eine andere Funktion

Verfasst: 28. März 2005 19:10
von Anfänger
Hallo!
Das mit der Ausgabe der Zufallszahlen hat nun wunderbar geklappt,.
Meine Zufallszahlen werden nun alle ausgegeben.

Nun will ich in meiner Klasse einen eigenen Slot definieren, der wie folgt aussieht:
public slots:
void neuesSpiel() {

feldbelegen(); // Feld wird mit neuen Zufallszahlen gelegt
setBackgroundColor(black);
update();
}
Allerdings wird nur die Hintergrundfarbe geändert, wenn ich auf meinen Button klicke und das Feld nicht neu mit Zufallszahlen belegt.

Irgendwer eine Idee, woran das liegen könnte?

LG
Anfänger

Verfasst: 28. März 2005 19:19
von FlorianBecker
Wie auch immer du es gesetzt hast...
bei z.B. setText(); muss auch setText() erneut aufgerufen werden, damit neue Werte geschrieben werden. Wenn du folgendes hast:

setText( feld );
1. zeige Text
2. ändere feld
3. zeige Text, dann zeigt er die immernoch den Text von vorher an. Musst also so machen:

setText( feld );
1. zeige Text
2. ändere feld
setText( feld );
3. zeige Text

Verfasst: 28. März 2005 19:39
von Anfänger
Habe das folgendermaßen gemacht:
void game::feldbelegen()
{

{srand(time(NULL));}

for (int i=0; i<20; i++)
{
for (int j=0; j<10; j++)
{
feld[j].farbe = ((int)(ceil(((double)rand()/RAND_MAX)*5))) ;// Farbe erzeugen
feld[j].button = new QPushButton ("Button",this) ; // button für das Feld erstellen
feld[j].button->setGeometry((i+1)*35,(j+2)*35,35,35);
feld[j].button->setText( QString( QChar((char)(feld[j].farbe +'0') ) ) );
}
}
}

Verfasst: 28. März 2005 19:41
von Anfänger
Habe das glaube ich nicht ganz verstanden, wie ich das dann umsetzen muss, damit neue Zufallszahlen ausgegeben werden :-/ Habe es gerade versucht, aber geklappt hat es nicht.

Verfasst: 28. März 2005 19:44
von FlorianBecker
Denk mit.

du musst erneut die setText Funktion für dein GUI Element aufrufen, wenn sich der Wert geändert hat.

Du solltest dein GUI Element erstellen, dann die Funktion für die Zahlen aufrufen und den Wert jeweils setzen, dann hast du keine Probleme mehr.

Verfasst: 28. März 2005 19:48
von FlorianBecker
Das Problem wird sein, dass du deine Buttons jedesmal neu erstellt werden.

Erstelle deine Buttons, zeichne diese, berechne die Farben, Texte und Positionen neu und setze diese dann, aber auf die bereits erstellten Buttons.