Ich möchte gern ein spielbrett erstellen mit pushbutton
bsp 4x4 (sollte so ähnlich wie ein Schachbrett sein, Randlos,lückenlos und mit Pushbutton)
So ungefähr.
_______________
___|___|___|___|
___|___|___|___|
___|___|___|___|
Nun wenn ich reihe und spalte analog in ein konfigurationsfenster(mit Gridlayout) eingebe, sollte 4x4 = 16 button hintereinander in mein QDialog ( Aus QDesigner= .ui file) von oben Links beginnend eingefügt werden. Das Problem ist, dass ich mit Gridlayout arbeiten muss, um manuell die Button mit" layout->addwidget(pushbutton,pos_x,pos_y) einzufügen. Jedoch werden die Button nicht ganz Oben links eingefügt und es entstehen immer zwischen 2 Button eine Lücke
Wie kann ich das realisieren?
Bis jetzt läuft das so ab.
Code: Alles auswählen
int pos = 0;
layout = new QGridLayout(this);
for(int i = 0;i<n;i++){
for(int j = 0;j<m;j++){
//Convert int int QString
QString str = QString::number(matrix[i][j],10); //Hier werden nur nummer in PushButton als Bezeicher eingefügt
this->button.push_back(new QPushButton(str,this));
//button[pos]->setFixedSize(80,80);
layout->addWidget(button[pos],i,j,Qt::AlignLeft); //Hier wird Button aus buttonvektor in Gridlayout von QDesigner eingefügt, jedoch nicht in oben links wie gewünscht
//Weil Gridlayout im hauptwidget befindet => position nicht ganz oben links?
pos++;
}
}
2.te Frage
Im Konfigurationsfenster ist es so, dass ich 2 lineedit habe wo ich n und m (reihe,spalte) eingeben kann . Dazu habe ich ein Restart Button erstellt. Wenn man Restart button drückt, werden alle button im Spielfeld gelöscht, und zusätzlich werden die eingegebene Daten im Lineedit gelöscht.
Code: Alles auswählen
QObject::connect(restart,SIGNAL(clicked()),this,SLOT(restartGame()));
void Klassename::restartGame(){
lineeditN->clear(); //Hier wird Inhalt in lineedit von N gelöscht jedoch bekomme ich immer danach ein Runtime Error Visual c++
// This Application has requested the runtime to terminated it in an usually way
}
Bitte um Hilfe
Vielen Dank