AlignTop

Alles rund um die Programmierung mit Qt
Antworten
uwe_road
Beiträge: 11
Registriert: 2. März 2011 12:20

AlignTop

Beitrag von uwe_road »

hallo,
habe eine kalsse erstellt, die ähnlich wie ne toolbox funktioniert. es sollen widgets hinzugefügt werden können und dann in einem vboxlayout angezeigt werden können... klappt auch.
nun mein problem:
lass ich mir diese klasse anzeigen, werden mir die einträge von unten wachesend angezeigt und nicht von oben.
ich habe versucht dem ganzen mit aligntop entgegenzuwirken, aber nutzlos.

hier der quelltext dazu!

#include <ToolBox.h>
#include <QtGui>

ToolBox::ToolBox()
{
layout = new QVBoxLayout;
list = new QList <QWidget*>;

setMinimumSize(150,300);

layout->addStretch();
layout->setAlignment(Qt::AlignBottom|Qt::AlignCenter);
this->setLayout(layout);
}


void ToolBox::add(QWidget *b)
{
layout->addWidget(b);
list->append(b);
}
Dateianhänge
Bild 2.png
Bild 2.png (29.41 KiB) 2967 mal betrachtet
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Dafür sorgt dein

Code: Alles auswählen

layout->addStretch(); 
Das müßte ans Ende und nicht an den Anfang.
uwe_road
Beiträge: 11
Registriert: 2. März 2011 12:20

Beitrag von uwe_road »

hmm ich hab das ausprobiert, funktioniert aber nicht...
hab jetzt einfach ma ein qwidgets mit einem vboxlayout versehen, da funktioniert das ganze, ich werde daraus nicht schlau...

#include <MainMenuToolBox.h>
#include <QtGui>


MainMenuToolBox::MainMenuToolBox()
{
QVBoxLayout *s = new QVBoxLayout;
QWidget *w = new QWidget;
QLabel *l = new QLabel("hallo");
s->addWidget(l);
s->setAlignment(Qt::AlignCenter|Qt::AlignTop);
s->addStretch();
w->setLayout(s);

preViewWidget = new QWidget;
preViewWidget->setMinimumSize(500,500);

settoolBox();
setobjectBox();

createMdiArea();
mdiArea->addSubWindow(toolBox);
mdiArea->addSubWindow(preViewWidget);
mdiArea->addSubWindow(w);

setCentralWidget(mdiArea);

}

void MainMenuToolBox::createMdiArea()
{
mdiArea = new QMdiArea(this);
}

void MainMenuToolBox::settoolBox()
{
toolBox = new ToolBox;

labelButton = new QPushButton("label");
buttonButton = new QPushButton("button");

toolBox->addSeperator("Werkzeuge");
toolBox->add(labelButton);
toolBox->add(buttonButton);
}


#include <ToolBox.h>
#include <QtGui>

ToolBox::ToolBox()
{
layout = new QVBoxLayout;
list = new QList <QWidget*>;

setMinimumSize(150,300);


layout->setAlignment(Qt::AlignTop|Qt::AlignCenter);
layout->addStretch();
this->setLayout(layout);

}


void ToolBox::add(QWidget *b)
{

layout->addWidget(b);
list->append(b);
}

void ToolBox::addSeperator(QString s)
{
QLabel *l = new QLabel(s);
layout->addWidget(l);
list->append(l);
}
Dateianhänge
soll aussehen wie das rechte fenster mit dem hallo label
soll aussehen wie das rechte fenster mit dem hallo label
Bild 2.png (35.58 KiB) 2956 mal betrachtet
archer
Beiträge: 306
Registriert: 2. Februar 2006 09:56

Beitrag von archer »

Du hast immer noch oben den Spacer, und dann folgen erst die Widgets.
Probier doch mal soetwas in ser Art:

Code: Alles auswählen

ToolBox::ToolBox()
{
    list      = new QList <QWidget*>;

    QVBoxLayout* pBaseLayout = new QVBoxLayout(this);   // Basis-Layout

    layout = new QVBoxLayout;
    layout->setAlignment(Qt::AlignTop|Qt::AlignCenter);

    pBaseLayout->addLayout(layout);
    pBaseLayout->addStretch();

    setMinimumSize(150,300);

} 
uwe_road
Beiträge: 11
Registriert: 2. März 2011 12:20

Beitrag von uwe_road »

cool danke,
funktioniert!
Antworten