Dynamisches TabWidget: Problem mit delete
Verfasst: 17. November 2010 09:49
Hallo zusammen!
ich möchte eine dynamisches TAB-Widget mit veränderbarer Anzahl an Tab-Seiten und QPushButton erzeugen. Dazu will ich zur Laufzeit eine Datei einlesen worin steht: 1. Wie viele Tabs ich benötige und 2. Wie viele Button auf jeder Tab-Seite sind.
Der Aufbau hat auch gut funktioniert:
Wie gesagt, das sieht soweit ganz gut aus...
Meine Frage bzw. Problem: Ich habe gelernt, dass ich für jedes "new" auch ein "delete" benötige. Stimmt das so schon einmal?
Nun wollte ich im Destruktor alles wieder löschen. Aber wie komme ich zu den einzelnen Objekten wieder hin?
Hatte mir dann testweise mal eine
erstellt und jedes neu erzeugte Element eingefügt. Im Destruktor dann entsprechend jedes Element gelöscht. Hat auch eigentlich funktioniert. Nur hin und wieder bricht das Programm beim Start oder beim beenden ab:
Was sagt mir dass? (realloc() deutet ja auf ein Speicherproblem hin.... aber warum?)
Bzw. wo muss ich suchen?
Gibt es einen Eleganteren Weg für meine Aufgabe? Denn eigentlich muss ich später noch jeden Button abfragen und entsprechend mit einem Slot verbinden....dazu aber später.....
Vielen dank!
ich möchte eine dynamisches TAB-Widget mit veränderbarer Anzahl an Tab-Seiten und QPushButton erzeugen. Dazu will ich zur Laufzeit eine Datei einlesen worin steht: 1. Wie viele Tabs ich benötige und 2. Wie viele Button auf jeder Tab-Seite sind.
Der Aufbau hat auch gut funktioniert:
Code: Alles auswählen
for(int i = 0; i < X; i++){
this->addTab(new QTabWidget, manager->getCanBuses().at(i).name);
QGridLayout *layout = new QGridLayout(this->widget(i));
QScrollArea *area = new QScrollArea(this->widget(i));
QFrame *frame = new QFrame;
for(int j = 0; j < Y; j++){
QPushButton *button = new QPushButton("Test", frame);
}
}Meine Frage bzw. Problem: Ich habe gelernt, dass ich für jedes "new" auch ein "delete" benötige. Stimmt das so schon einmal?
Nun wollte ich im Destruktor alles wieder löschen. Aber wie komme ich zu den einzelnen Objekten wieder hin?
Hatte mir dann testweise mal eine
Code: Alles auswählen
QList<QObject*> *objects = objects = new QList<QObject*>;Code: Alles auswählen
*** glibc detected *** /Programmname: realloc(): invalid old size: 0x0000000000bc2c60 ***
======= Backtrace: =========
/lib/libc.so.6[0x7fd999cf09a8]
/lib/libc.so.6[0x7fd999cf45a1]
/lib/libc.so.6(realloc+0x12f)[0x7fd999cf501f]
...
Bzw. wo muss ich suchen?
Gibt es einen Eleganteren Weg für meine Aufgabe? Denn eigentlich muss ich später noch jeden Button abfragen und entsprechend mit einem Slot verbinden....dazu aber später.....
Vielen dank!