QDialog Position Festlegen?

Alles rund um die Programmierung mit Qt
Antworten
Helloworld123
Beiträge: 1
Registriert: 25. April 2017 23:47

QDialog Position Festlegen?

Beitrag von Helloworld123 »

Hallo

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
Antworten