Seite 1 von 1

[gelöst]Probleme mit mdi-fenster!

Verfasst: 3. November 2006 14:33
von biba butzelmann
hi, habe eine applikation mit mdi fenstern.
diese weden auch angezeigt. ich kann sie auch mit der maus größer und kleiner "ziehen", auch maximieren (so das der gesamte workspace ausgefüllt wird) klappt problemlos. nur wenn ich ein so maximiertes fenster wieder versuche zu minimieren stürzt mir das prog mit folgender fehlermeldung ab:

Code: Alles auswählen

HEAP[sudoku.exe]: HEAP: Free Heap block 9e5f00 modified at 9e6028 after it was freed

Windows hat einen Haltepunkt in sudoku.exe ausgelöst.

Dies kann auf eine Beschädigung des Heaps zurückzuführen sein und weist auf ein Problem in sudoku.exe oder in einer der geladenen DLLs hin.

Weitere Analyseinformationen finden Sie möglicherweise im Ausgabefenster.
da ich keinen blassen schimmer habe wo der fehler liegen, oder wie ich das debuggen könnte, weiß ich auch nicht welche teile des sourcecodes relevant sind... (also falls mehr code auch mehr hilft bitte sagen ;-) )

Code: Alles auswählen

MainWindow::MainWindow(){ 
	 workspace = new QWorkspace;
         setCentralWidget(workspace);
         ...
    	 GameWidget *widget =createGameWidget();
}

Code: Alles auswählen

GameWidget *MainWindow::createGameWidget()
 {
	 GameWidget *gameWidget = new GameWidget();	
	 workspace->addWindow(gameWidget);
	 return gameWidget;
 }

bin für jede antwort dankbar...

Verfasst: 3. November 2006 15:07
von RHBaum
haeng mal deine widgets in die QObject structur rein, sprich geb denen nen parent mit ...

[cpp]
MainWindow::MainWindow(){
workspace = new QWorkspace(this);
setCentralWidget(workspace);
...
GameWidget *widget =createGameWidget();
}

GameWidget *MainWindow::createGameWidget()
{
GameWidget *gameWidget = new GameWidget(workspace);
workspace->addWindow(gameWidget);
return gameWidget;
}
[/cpp]

so funktionierst zumindest bei mir ....
autodelete hasst du gesetzt ?
entfernst du irgendwo widgets aus dem workspace und wenn ja wie ?

die fehlermeldung sagt dir eigentlich das du auf nen Object (hoechstwahrscheinlich widget) noch oder wieder zugreifst, was schon deleted wurde (hoechstwahrscheinlich autodelete) ...

aber alles nur vermutungen ...

ciao ...

Verfasst: 3. November 2006 15:42
von biba butzelmann
danke erstmal für die schnelle antwort.
habe meinen widgets einen parent mitgegeben und das hat folgendes gebracht:

vorher:
  • maximieren von widgets - problemlos
    beim ersten minimieren - absturz
jetzt :
  • maximieren - problemlos
    einmal minimieren - problemlos
    alles danach - absturz *grübel*
also immerhin eine verbesserung... aber leider noch nicht ganz die lösung ;(

noch einen tipp für einen vertrottelten qt-noob wie mich ;) ?

deleten tu ich mit "setAttribute(Qt::WA_DeleteOnClose);" im gameWidget-constructor
-----------------------------------------------------------------------------
edit:

also wenn ich das menu aus dem Mainwindow werfe funktioniert es interresanterweise... jemand eine idee?

Verfasst: 3. November 2006 19:34
von upsala
Normalerweise wird beim debuggen eine Liste der zuletzt aufgerufenen Funktionen angegeben. Präsentier uns doch diese mal...

Verfasst: 3. November 2006 22:47
von biba butzelmann
hi,

fürchte das problem liegt irgendwo in Visual Studio. habe jetzt mal aus der konsole mit nmake anstatt direkt aus VS kompiliert und da funzt es ohne zu meckern. trotzdem danke für die hilfe!

Bug

Verfasst: 4. November 2006 09:50
von Volker
Das mit QWorkspace ist ein Bug in QT. Hab mal die Snapshot Variante 4.2.2 von QWorkspace runtergeladen und das übersetzt, dann passierts nicht mehr.

Dürfte also mit der nächsten 4.2.2 Version behoben sein.