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);
}
AlignTop
Dafür sorgt dein
Das müßte ans Ende und nicht an den Anfang.
Code: Alles auswählen
layout->addStretch(); 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);
}
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
- Bild 2.png (35.58 KiB) 2963 mal betrachtet
Du hast immer noch oben den Spacer, und dann folgen erst die Widgets.
Probier doch mal soetwas in ser Art:
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);
}