SpacerItem in einem QWidget fehlt als Children

Alles rund um die Programmierung mit Qt
Antworten
BDahl
Beiträge: 12
Registriert: 1. Juni 2011 15:06

SpacerItem in einem QWidget fehlt als Children

Beitrag von BDahl »

Hi,
ich habe folgendes Problem:
ich habe im QT Designer ein Widget(MasterWidget) zusammenbastelt(das Widget hat ein QVBoxLayout als Layoutmanager und beinhaltet ein Vertical Spacer).
Nun füge ich Programmatisch andere Widgets ein und wollte mir alle Childs meines Widget anzeigen lassen.
Dazu habe ich folgenden Code Verwendet:
Kurze Erklärung zum Code ich iteriere über alle child pointers des Masterwidgets und lasse mir die classname ausgeben.

Code: Alles auswählen

QObject *curObj;
    QList<QObject*> Childrens=m_pUi->scrollAreaWidgetContents->children(); //Hole eine Liste mit allen QObject* aus den Master Widget
    QList<QObject*>::iterator i;
   log(true,QString("Start Logging\n"));
    for(i=Childrens.begin();i!=Childrens.end();i++)
    {
        curObj=qobject_cast<QObject*>(*i);
        if(curObj)
        {
            log(true,QString(curObj->metaObject()->className()));
        }
    }
Da erhalte ich alle Childs aber keine SpacerItem angezeigt. Laut Doku ist aber SpacerItem von QObject abgeleitet. Kann mir jemand sagen
a) warum werden die nicht angezeigt
b) wie kann ich alle Childs (inkl. Spacer) in der Reihenfolge anzeigen lassen wie die eingehängt worden sind.

Danke für die Hilfe
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Beitrag von Troll.Soft »

Hast Du schon mal diese Funktionen von Qt probiert?

Code: Alles auswählen

void QObject::dumpObjectInfo ()
Dumps information about signal connections, etc. for this object to the debug output.
This function is useful for debugging, but does nothing if the library has been compiled in release mode (i.e. without debugging information).
See also dumpObjectTree().
void QObject::dumpObjectTree ()
Dumps a tree of children to the debug output.
This function is useful for debugging, but does nothing if the library has been compiled in release mode (i.e. without debugging information).
See also dumpObjectInfo().
Da muß man nicht soviel programmieren und was in dem Output nicht dabei ist, existiert wahrscheinlich auch nicht.
tschüß
Troll.Soft
BDahl
Beiträge: 12
Registriert: 1. Juni 2011 15:06

Beitrag von BDahl »

hmm... irgendwie gibt er da nix aus...
Wie kann ich zur Ausgabe kommen? (P.S. ich kann nicht die QT Libs im debug modus installieren!!!)
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Minimal kompilierbares Beispiel bitte. Ich schätze scrollAreaWidgetContents ist nicht das Haupt-Widget bzw. der Spacer ist kein Child von scrollAreaWidgetContents.
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Ein QSpacerItem ist nach meiner Doku (4.7) von QLayoutItem abgeleitet und nicht von QObject.
BDahl
Beiträge: 12
Registriert: 1. Juni 2011 15:06

Beitrag von BDahl »

@archer: Ja aber QLayoutItem ist laut meiner Doku ist QlayoutItem von QObject abgeleitet. in C++ gibts die Mehrfachvererbung, ist die für QT elemente ausgehebelt?
Troll.Soft
Beiträge: 190
Registriert: 18. Juni 2008 09:52
Wohnort: Hamburg

Beitrag von Troll.Soft »

BDahl hat geschrieben:@archer: Ja aber QLayoutItem ist laut meiner Doku ist QlayoutItem von QObject abgeleitet. in C++ gibts die Mehrfachvererbung, ist die für QT elemente ausgehebelt?
In der Tat ist die Mehrfachvererbung bei Qt teilweise ausgehebelt. Aber nur wenn QObject beteiligt ist, es darf nur einmal vorkommen. Ein kurzer Blick in die Doku überzeugte mich davon, das in der QSpacer - Linie kein QObject vorkommt.

P.S.: Wie arbeitest Du ohne Debugger und warum ?

tschüß
Troll.Soft
Christian81
Beiträge: 7319
Registriert: 26. August 2004 14:11
Wohnort: Bremen
Kontaktdaten:

Beitrag von Christian81 »

Wenn mir jetzt noch einer erkläre könnte wo hier Mehrfachvererbung vorliegt wäre es nicht schlecht. Ein minimales Beispiel haben wir immer noch nicht gesehen...
MfG Christian

'Funktioniert nicht' ist keine Fehlerbeschreibung
Antworten