Größenveränderung von QWidget im Hauptfenster
-
- Beiträge: 34
- Registriert: 6. Juni 2008 14:44
Größenveränderung von QWidget im Hauptfenster
Ich habe in meinem Hauptfenster zwei QHBoxLayouts im oberen befindet sich ein Widget und im unteren zwei.
Wie kann ich nun mit Qt eine Art Leiste, wie man sie aus verschiedenen Windows Fenstern kennt, erzeugen, mit der ich die Größe der zwei QHBoxLayouts als auch der unteren Qwidgets variieren kann?
Wie kann ich nun mit Qt eine Art Leiste, wie man sie aus verschiedenen Windows Fenstern kennt, erzeugen, mit der ich die Größe der zwei QHBoxLayouts als auch der unteren Qwidgets variieren kann?
-
- Beiträge: 34
- Registriert: 6. Juni 2008 14:44
Ich hab meine GUI ohne den Designer geschrieben.
Auch ein erster Blick in den Designer hat mir nicht weitergeholfen. Ein Blick in die Beispiele zeigte das man das wohl mit DockWidgtes machen kann.
Jedoch suche ich nur eine Funktion die lediglich eine Größenveränderung zulässt.
Gib es sowas?
Für einen genaueren Tipp wäre ich dankbar...
Auch ein erster Blick in den Designer hat mir nicht weitergeholfen. Ein Blick in die Beispiele zeigte das man das wohl mit DockWidgtes machen kann.
Jedoch suche ich nur eine Funktion die lediglich eine Größenveränderung zulässt.
Gib es sowas?
Für einen genaueren Tipp wäre ich dankbar...
Schau dir mal http://doc.trolltech.com/4.4/qsplitter.html an. Das ist, glaube ich, was du suchst.
MfG,
Hilefoks
MfG,
Hilefoks
Aber für GUI-Fragen ist es meist am effektivsten diesen heranzuziehen, z.B. auch nützlich um mit sizePolicies herumzuexperimentieren usw.rafilis1982 hat geschrieben:Ich hab meine GUI ohne den Designer geschrieben.
In der erwähnten Formularsymbolleiste (oder dem gleichnamigen Menü) wird man sofort fündig (gibt doch nur 8 Symbole..). Aber bitteschön: Das Ding nennt sich QSplitterrafilis1982 hat geschrieben:Auch ein erster Blick in den Designer hat mir nicht weitergeholfen.
MfG,
FaS
-
- Beiträge: 34
- Registriert: 6. Juni 2008 14:44
Erst mal vielen Dank für die Antworten.
Ich hab das ganze mal so implementiert wie ich es mir zuerst gedacht habe.
Leider kriege ich nun ein völlig verzerrtes Bild meines Hauptfensters.
Anbei mal der Code für das Hauptfenster:
Wie man vlt erkennen kann, hab ich die neuen Stellen mit "new " gekennzeichnet.
Ich hoffe mir kann jmd sagen, wo der Fehler liegt. Ich würd schon ganz gerne auch das Layout behalten, weil man damit den StretchfFaktor einstellen kann.
Wenn es dazu eine Alternative gibt, auch Recht
Ich hab das ganze mal so implementiert wie ich es mir zuerst gedacht habe.
Leider kriege ich nun ein völlig verzerrtes Bild meines Hauptfensters.
Anbei mal der Code für das Hauptfenster:
Code: Alles auswählen
//// Set-up main widgets ////
QWidget *mainWindow = new QWidget();
QHBoxLayout* mainWindowLayout = new QHBoxLayout();
//////////////////////////////////////////////////////////////////////////
//// Mitte oberhalb (OpenGl,Slider) - horizontales Layout
QWidget *openGl = new QWidget();
QHBoxLayout *openGlLayout = new QHBoxLayout();
openGlLayout->setMargin(10);
openGlLayout->setSpacing(10);
//openGlLayout->setSizeConstraint(QLayout::SetNoConstraint);
glmesh = new GLMesh(openGl,settings);
glmesh->setMinimumWidth(600);
glmesh->setMinimumHeight(448);
openGlLayout->addWidget(glmesh);
clipping = new QSlider(openGl);
clipping->setMinimum(-100);
clipping->setMaximum(100);
clipping->setPageStep(5);
clipping->setValue(0);
clipping->setToolTip("Clipping");
connect(clipping, SIGNAL(valueChanged(int)), glmesh, SLOT(setClipping(int)));
openGlLayout->addWidget(clipping);
openGl->setLayout(openGlLayout);
//////////////////////////////////////////////////////////////////////////
//// Mitte unten (logger,treewidget) - horizontales Layout
QWidget *logWnd = new QWidget();
QHBoxLayout *logWndLayout = new QHBoxLayout();
QSplitter *logWndlay = new QSplitter(logWnd);//new
//logWndLayout->setSizeConstraint(QLayout::SetNoConstraint);
logWndLayout->setMargin(10);
logWndLayout->setSpacing(10);
logMesh = new logger(logWnd);//QTreeWidget for Error Checking
treeWidget = new QtDOMParser(logWnd);
logWndLayout->addWidget(treeWidget);
logWndLayout->addWidget(logMesh);
logWnd->setLayout(logWndLayout);
logWndlay->addWidget(treeWidget);//new
logWndlay->addWidget(logMesh);//new
//////////////////////////////////////////////////////////////////////////
//// Vertikales Layout rechts (bestehend aus beiden oberen Layouts)
QWidget *vboxRight = new QWidget();
QVBoxLayout *vboxRightLayout = new QVBoxLayout();
QSplitter *vBoxRightLay = new QSplitter(vboxRight);//new
vboxRightLayout->addWidget(openGl);
vboxRightLayout->addWidget(logWnd);
vboxRightLayout->setStretchFactor(openGl,200);
vBoxRightLay->addWidget(openGl);//new
vBoxRightLay->addWidget(logWnd);//new
vboxRight->setLayout(vboxRightLayout);
//////////////////////////////////////////////////////////////////////////
//// Put them all together...
mainWindowLayout->addWidget(vboxRight);
mainWindow->setLayout(mainWindowLayout);
setCentralWidget(mainWindow);
Ich hoffe mir kann jmd sagen, wo der Fehler liegt. Ich würd schon ganz gerne auch das Layout behalten, weil man damit den StretchfFaktor einstellen kann.
Wenn es dazu eine Alternative gibt, auch Recht
-
- Beiträge: 34
- Registriert: 6. Juni 2008 14:44
Ok, hab ich getan.
Nur leider sind die Widgets nun hintereinander, anstatt wie vorher unter - bzw. nebeneinander.
Woran kann das liegen?
Hier mal der aktualisierte Code:
Nur leider sind die Widgets nun hintereinander, anstatt wie vorher unter - bzw. nebeneinander.
Woran kann das liegen?
Hier mal der aktualisierte Code:
Code: Alles auswählen
//// Set-up main widgets ////
QWidget *mainWindow = new QWidget();
QHBoxLayout* mainWindowLayout = new QHBoxLayout();
//////////////////////////////////////////////////////////////////////////
//// oberhalb (OpenGl,Slider) - horizontales Layout
QWidget *openGl = new QWidget();
QHBoxLayout *openGlLayout = new QHBoxLayout();
openGlLayout->setMargin(10);
openGlLayout->setSpacing(10);
//openGlLayout->setSizeConstraint(QLayout::SetNoConstraint);
glmesh = new GLMesh(openGl,settings);
glmesh->setMinimumWidth(600);
glmesh->setMinimumHeight(448);
clipping = new QSlider(openGl);
clipping->setMinimum(-100);
clipping->setMaximum(100);
clipping->setPageStep(5);
clipping->setValue(0);
clipping->setToolTip("Clipping");
connect(clipping, SIGNAL(valueChanged(int)), glmesh, SLOT(setClipping(int)));
openGlLayout->addWidget(glmesh);
openGlLayout->addWidget(clipping);
openGl->setLayout(openGlLayout);
//////////////////////////////////////////////////////////////////////////
//// unten (logger,treewidget) - horizontales Layout
QWidget *logWnd = new QWidget();
//QHBoxLayout *logWndLayout = new QHBoxLayout();
QSplitter *logWndLayout = new QSplitter(logWnd);
//logWndLayout->setSizeConstraint(QLayout::SetNoConstraint);
//logWndLayout->setMargin(10);
//logWndLayout->setSpacing(10);
logMesh = new logger(logWnd);//QTreeWidget for Error Checking
treeWidget = new QtDOMParser(logWnd);
logWndLayout->addWidget(treeWidget);
logWndLayout->addWidget(logMesh);
//logWnd->setLayout(logWndLayout);
logWndLayout->setOrientation(Qt::Horizontal);
//////////////////////////////////////////////////////////////////////////
//// Vertikales Layout (beide oberen Layouts zusammen)
QWidget *vboxRight = new QWidget();
//QVBoxLayout *vboxRightLayout = new QVBoxLayout();
QSplitter *vboxRightLayout = new QSplitter(vboxRight);
vboxRightLayout->addWidget(openGl);
vboxRightLayout->addWidget(logWnd);
//vboxRightLayout->setStretchFactor(openGl,200);
vboxRightLayout->setStretchFactor(0,200);
//vboxRight->setLayout(vboxRightLayout);
vboxRightLayout->setOrientation(Qt::Vertical);
//////////////////////////////////////////////////////////////////////////
//// Put them all together...
mainWindowLayout->addWidget(vboxRight);
mainWindow->setLayout(mainWindowLayout);
setCentralWidget(mainWindow);
-
- Beiträge: 34
- Registriert: 6. Juni 2008 14:44
Schön , dass du weisst was ich gelesen habe oder nicht...
Im früheren Leben Hellseher gewesen?
Offensichtlich hast du Sie ja dann genau studiert und anstatt so einen flapsigen Kommentar zu geben, könntest du mir auch freundlicherweise mitteilen woran das liegt?
Ganz ehrlich, wenn dann lieber keinen Kommentar als so einen, der bringt niemanden weiter....
Im früheren Leben Hellseher gewesen?
Offensichtlich hast du Sie ja dann genau studiert und anstatt so einen flapsigen Kommentar zu geben, könntest du mir auch freundlicherweise mitteilen woran das liegt?
Ganz ehrlich, wenn dann lieber keinen Kommentar als so einen, der bringt niemanden weiter....
-
- Beiträge: 34
- Registriert: 6. Juni 2008 14:44