verschiedene verschachtelte Layouts

Alles rund um die Programmierung mit Qt
Antworten
kannaum
Beiträge: 73
Registriert: 31. Januar 2010 09:57

verschiedene verschachtelte Layouts

Beitrag von kannaum »

hallo,

Ich hoffe mal der Titel ist richtig gewählt.
Ich habe ca. folgenden Aufbau in meinem Programm:
---------------- ----------------
| Buttons etc.| | Buttons etc.| 1
---------------- ----------------
| |
---------------- ----------------
| QGridLayout| | QGridLayout| 2
---------------- ----------------
| |
---------------- ----------------
| QGroupBox| | QGroupBox| 3
---------------- ----------------
| |
---------------
|QGridLayout | 4
---------------

Ich hoffe das ist verständlich gemacht.
ich habs schon bis Ebende 3 geschafft.
Bis jetzt sind es 2 QGroupBoxen, es werden aber 4 werden.
Ich will diese dann im Hauptfenster so anordnen:
------------ ------------
| | | |
| | | |
------------ -----------
------------ ------------
| | | |
| | | |
------------ -----------

Eine links oben, eine rechts oben, eine links unten, eine rechts unten.

Ich weiß aber nicht wie ich die QGroupBoxen ins Grid Layout einfügen soll und dann fehlt mir auch die Funktion, dass es das Hauptlayout des Hauptfensters ist.

mfg



Edit: meine gezeichenten Boxen kann man leider nur sehr schwer erkennen wenn man den Tread absenden :(
upsala
Beiträge: 3946
Registriert: 5. Februar 2006 20:52
Wohnort: Landshut
Kontaktdaten:

Beitrag von upsala »

Edit: meine gezeichenten Boxen kann man leider nur sehr schwer erkennen wenn man den Tread absenden
Das nennt sich HTML.

Schon mal mit dem Designer das Layout nachgebaut?
kannaum
Beiträge: 73
Registriert: 31. Januar 2010 09:57

Beitrag von kannaum »

Nein. noch nicht.
Ich bin mit dem noch nie zurechtgekommen :(

mfg
Nvidia
Beiträge: 238
Registriert: 22. Februar 2010 21:23

Beitrag von Nvidia »

wenn ich deine zeichnung anschaue check ich 0.
erklaer das mal ruhig und ein bisschen ausfuerhlicher
und wieso kannst du die GroupBoxen nicht einfuegen?
wie waers mit http://doc.qt.nokia.com/4.6/qgridlayout.html#addWidget ?
kannaum
Beiträge: 73
Registriert: 31. Januar 2010 09:57

Beitrag von kannaum »

Mit addWidget habe ich es auch gemacht, aber ich dachte, dass es falsch war das man nichts sah.
Von der Hirarchie und der Aufteilung habe ich jetzt einen Screenshot gemacht und hochgeladen.

Ich poste mal meinen Code:

Code: Alles auswählen

    hauptLayout = new QGridLayout(this);
    hauptLayout->addWidget(G_groupbox, 0, 0);
    hauptLayout->addWidget(P_groupbox, 0, 1);
    setLayout(hauptLayout);
Es gibt keine Fehlermeldung und das Programm wird auch ausgeführt.
Aber mit foglender Meldung:
QLayout: Attempting to add QLayout "" to Mathematik "", which already has a layout
QWidget::setLayout: Attempting to set QLayout "" on Mathematik "", which already has a layout
Mathematik ist die Klasse.

Ich weiß aber nicht was ich bei meinem Code falsch habe.

mfg
Dateianhänge
aufteilung.JPG
aufteilung.JPG (10.8 KiB) 4017 mal betrachtet
baum.JPG
baum.JPG (18.76 KiB) 4017 mal betrachtet
padreigh
Beiträge: 340
Registriert: 13. Mai 2010 10:06

Beitrag von padreigh »

kannaum hat geschrieben:
QLayout: Attempting to add QLayout "" to Mathematik "", which already has a layout
QWidget::setLayout: Attempting to set QLayout "" on Mathematik "", which already has a layout

Dein Mathematik hat schon ein Layout.

Du machst ein Widget, gibst dem ein Layout und alles andere addest du an das Layout:

Code: Alles auswählen

    QWidget * w = new QWidget;
    QVBoxLayout * vb = new QVBoxLayout;
    w->setLayout(vb);

    QGridLayout * grid = new QGridLayout;

    grid->addWidget(new QLabel("1"),0,0);
    grid->addWidget(new QLabel("2"),0,1);
    grid->addWidget(new QLabel("3"),1,0);
    grid->addWidget(new QLabel("4"),1,1);

    vb->addLayout(grid); // damit landet das grid im vb und damit im Widget ...

    QGridLayout * grid2 = new QGridLayout;
    grid2->addWidget(new QLabel("a"),0,0);
    grid2->addWidget(new QLabel("b"),0,1);
    grid2->addWidget(new QLabel("c"),1,0);
    grid2->addWidget(new QLabel("d"),1,1);
    vb->addLayout(grid2); // damit landet das grid im vb und damit im Widget ...

    QGridLayout * grid3 = new QGridLayout;
    grid3->addWidget(new QLabel("A"),0,0);
    grid3->addWidget(new QLabel("B"),0,1);
    grid3->addWidget(new QLabel("C"),0,2);
    grid3->addWidget(new QLabel("D"),1,0,1,3);

    grid2->addLayout(grid3,2,0,2,2); // pack das ins grid2
Patrick (QtCreator 1.3.1, Qt 4.6.3)
---
template = subdirs
kannaum
Beiträge: 73
Registriert: 31. Januar 2010 09:57

Beitrag von kannaum »

Ok jetzt gehts.
Vielen dank.

mfg
Antworten