Hallo,
ich habe eine Frage bezüglich child and parent-widgets.
Ich will ein parent-widget erstellen.
In diesen soll ein child-widget eingefügt werden. Das soweit geschafft.
Das child-widget muss eine vordefinierte Größe haben. Das heißt das parent-widget
soll ein Rahmen sein in dem sich mit einem Abstand von einem Centimeter das child-widget befindet.
Mein Problem nun, wenn ich mir die Geometriedaten über debugger anschaue scheint child-widget
größer zu sein als das parent-widget und die Größe des child-widgets ändert sich nicht automatisch mit
der parent Größe.
Danke schon mal im voraus für die Hilfe.
child and parent-widgets
Re: child and parent-widgets
Hallo,
schau dir mal das Thema Layout an (QLayout, QHBoxLayout...).
In das Parentwidget kommt ein Layout und dann in das Layout das Childwidget.
Dann skaliert es sich auch mit.
schau dir mal das Thema Layout an (QLayout, QHBoxLayout...).
In das Parentwidget kommt ein Layout und dann in das Layout das Childwidget.
Dann skaliert es sich auch mit.
Re: child and parent-widgets
Danke für die Antwort,
das hatte ich schon ausprobiert und es hat auch soweit funktioniert. Das Problem hierbei ist der Rahmen, der muss wie schon gesagt einen festen Abstand haben.
Die Frage ist hier wie kriege ich die richtigen Koordinaten, des Layouts und der Widgets und wie kann ich die Koordinaten des layouts verändern?
Hier nochmal ein Minimal-Beispiel:
über setGeometry() lässt sich die Größe des childWidgets nicht verändern. Außerdem sind die Koordinaten des childWidgets verschoben. Aus der Ausgabe folgt:
parentWidget: 100 100 480 640 (halt wie oben festgelegt)
childWidget: 11 11 458 618 (hier wahrscheinlich durch das Layout verändert)
kann man die Layout-Größe gleich der parent_widget-Größe setzen sodass
ist.
das hatte ich schon ausprobiert und es hat auch soweit funktioniert. Das Problem hierbei ist der Rahmen, der muss wie schon gesagt einen festen Abstand haben.
Die Frage ist hier wie kriege ich die richtigen Koordinaten, des Layouts und der Widgets und wie kann ich die Koordinaten des layouts verändern?
Hier nochmal ein Minimal-Beispiel:
Code: Alles auswählen
#include <cmath>
#include <iostream>
#include <QApplication>
#include <QtWidgets/QWidget>
#include <QtGui/QtGui>
#include <QHBoxLayout>
#include <QPushButton>
int main(int argc, char **argv)
{
QApplication a(argc, argv);
QWidget * widget_parent=new QWidget;
widget_parent->setGeometry(100,100,640,480);
QWidget * widgetChild=new QWidget;
QHBoxLayout * myLayout=new QHBoxLayout;
myLayout->addWidget(widgetChild);
widget_parent->setPalette( QPalette( Qt::blue ) );
widgetChild->setPalette( QPalette( Qt::red ) );
widgetChild->setAutoFillBackground(true);
//widgetChild->setParent(widget_parent);
widgetChild->setGeometry(widget_parent->geometry().x()+30,
widget_parent->geometry().y()+30,
widget_parent->geometry().width()-30,
widget_parent->geometry().height()-30);
widget_parent->setLayout(myLayout);
widget_parent->show();
QList<QRect> *dummy=new QList<QRect>;
dummy->append(widget_parent->geometry());
dummy->append(widgetChild->geometry());
for (int i=0;i<dummy->size();i++){
std::cout << dummy->value(i).x()<< "\t"
<< dummy->value(i).y()<< "\t"
<< dummy->value(i).height()<< "\t"
<< dummy->value(i).width() << "\n"; //std::endl
}
return a.exec();
}
parentWidget: 100 100 480 640 (halt wie oben festgelegt)
childWidget: 11 11 458 618 (hier wahrscheinlich durch das Layout verändert)
kann man die Layout-Größe gleich der parent_widget-Größe setzen sodass
Code: Alles auswählen
childWidget.geometry()=[0 0 480 640]
Re: child and parent-widgets
Im Layout kannst du die Ränder einstellen mit setMargin() oder setContentsMargins(),
dann mußt du garnichts herumrechnen.
dann mußt du garnichts herumrechnen.
Re: child and parent-widgets
Danke für die Hilfe Problem gelöst.