Probleme mit QLayoutItem

Alles rund um die Programmierung mit Qt
Antworten
stom
Beiträge: 7
Registriert: 23. April 2012 13:36

Probleme mit QLayoutItem

Beitrag von stom »

Liebe QT Communitie

Ich arbeite jetzt seit drei Wochen mit der QT Libary, also ich bin noch ein QT Neuling. Bis jetzt konnte ich eigentlich alle Probleme mit der QT Docu und diesem Forum lösen. Mein jetztiges Problem konnte ich bis jetzt nicht lösen.

Ich habe mehrer Checkboxen in eine GroupBox zusammen gefügt. Diese GroupBox habe ich dann in ein Gridlayout zusammen gefügt. Ich möchte nun auf die einzelnen Widget mit dem Befehl

Code: Alles auswählen

grid->itemAt(grid->count());
zugreifen.

Nur wenn ich QLayoutItem Initalisieren möchte

Code: Alles auswählen


	 QLayoutItem Item;
	 Item = new QLayoutItem();

kommt dieser Fehler

1>.\Annotation_window.cpp(19) : error C2259: 'QLayoutItem' : cannot instantiate abstract class
1> due to following members:
1> 'QSize QLayoutItem::sizeHint(void) const' : is abstract
1> c:\qt\4.8.1\include\qtgui\../../src/gui/kernel/qlayoutitem.h(69) : see declaration of 'QLayoutItem::sizeHint'
1> 'QSize QLayoutItem::minimumSize(void) const' : is abstract
1> c:\qt\4.8.1\include\qtgui\../../src/gui/kernel/qlayoutitem.h(70) : see declaration of 'QLayoutItem::minimumSize'
1> 'QSize QLayoutItem::maximumSize(void) const' : is abstract
1> c:\qt\4.8.1\include\qtgui\../../src/gui/kernel/qlayoutitem.h(71) : see declaration of 'QLayoutItem::maximumSize'
1> 'Qt::Orientations QLayoutItem::expandingDirections(void) const' : is abstract
1> c:\qt\4.8.1\include\qtgui\../../src/gui/kernel/qlayoutitem.h(72) : see declaration of 'QLayoutItem::expandingDirections'
1> 'void QLayoutItem::setGeometry(const QRect &)' : is abstract
1> c:\qt\4.8.1\include\qtgui\../../src/gui/kernel/qlayoutitem.h(73) : see declaration of 'QLayoutItem::setGeometry'
1> 'QRect QLayoutItem::geometry(void) const' : is abstract
1> c:\qt\4.8.1\include\qtgui\../../src/gui/kernel/qlayoutitem.h(74) : see declaration of 'QLayoutItem::geometry'
1> 'bool QLayoutItem::isEmpty(void) const' : is abstract
1> c:\qt\4.8.1\include\qtgui\../../src/gui/kernel/qlayoutitem.h(75) : see declaration of 'QLayoutItem::isEmpty'

Ich verwende den Compiler von Visual Studio C++ Express 2008.

Danke für eure Hilfe im Vorraus
Mit freundlichen
Stom
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Probleme mit QLayoutItem

Beitrag von Christian81 »

QLayoutItem ist eine abstrakte Basisklasse - die kann man (wie dir der Compiler ja auch korrekt sagt) nicht direkt instanziieren.
Abgesehen davon weiß ich nicht was das mit deinem eigentlichen Problem zu tun haben sollte - die Funktion itemAt() gibt Dir doch schon ein Pointer auf ein LayoutItem zurück - warum also ein neues erstellen??
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
stom
Beiträge: 7
Registriert: 23. April 2012 13:36

Re: Probleme mit QLayoutItem

Beitrag von stom »

Erstmal Danke für die schnelle Antwort.

Okay das mit der abstrakte Basisklasse hab ich nicht gewusst -> sry für meine schlechten c++ kenntnisse :)

Ich möchte den Pointer den ich zurück bekomme speichern, um das Item, worauf der Pointer zeigt zu löschen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Probleme mit QLayoutItem

Beitrag von Christian81 »

Und wo genau ist jetzt das Problem? Du bekommst einen Pointer auf QLayoutItem zurück und damit kommst Du auf das zugehörige Widget (siehe Doku)
Aber warum ein Widget auf diese komische Art und Weise löschen?
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
stom
Beiträge: 7
Registriert: 23. April 2012 13:36

Re: Probleme mit QLayoutItem

Beitrag von stom »

Ja du hattest recht, er gibt mir einen pointer zurueck. DANKE

Code: Alles auswählen

QWidget* buf;
buf = new QWidget();
buf = grid->itemAt(grid->count()-1)->widget();
delete buf


Warum ich die Widget so löschen will -> ich habe 4 checkboxen in einem Gridlayout und möchte beim "aktivieren" einer checkbox, dass zusätzliche checkboxen generiert werden. wenn ich die checkbox "deaktiviere" möchte ich die generierten checkboxen wieder löschen.
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Re: Probleme mit QLayoutItem

Beitrag von Christian81 »

Und warum legst Du erst ein neues QWidget mit new an und überschreibst dann den Pointer direkt wieder? Damit hast Du ein schönes Memory-Leak geschaffen... Mir scheint hier fehlen ein paar wesentliche C++ Grundlagen.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
stom
Beiträge: 7
Registriert: 23. April 2012 13:36

Re: Probleme mit QLayoutItem

Beitrag von stom »

Ja ist mir auch auf gefallen, habs schon geändert. aber du hast recht meine c++ grundlagen sind nicht die aller besten, ist schon ein zeiterl her das ich c++ programmiert habe. aber danke für deine schnelle hilfe
Antworten