ich habe ein Problem mit meinem Layout. Die Fenstergröße passt sich den Widgets leider nicht an.
Ich erkläre kurz, was das Fenster macht. Beim Öffnen des Fenster habe ich eine ComboBox, wo ein Element ausgewählt wird. Danach wird eine entsprechende GroupBox im Layout erstellt.
Das Problem ist, dass nach dem Hinzufügen der neuen GroupBox sich das Fenster der neuen Größe nicht anpasst.
Hier mal der entsprechende Code dazu. Evt. liegt der Fehler ja an meinem Aufbau des Layouts.
Code: Alles auswählen
void MyChild::createSourceTophatWindow(){
setWindowTitle(tr("Tophat"));
srcTopMainLayout = new QGridLayout;
createGroupBoxTophatType();
setLayout(srcTopMainLayout);
}Code: Alles auswählen
void MyChild::createGroupBoxTophatType(){
srcTopTypeGroupBox = new QGroupBox(tr("Illumination Type"));
srcTopTypeLayout = new QGridLayout;
srcTopTypeComboBox = new QComboBox;
srcTopTypeComboBox->addItem("Annular");
srcTopTypeComboBox->addItem("Circle");
srcTopTypeComboBox->addItem("Multi-Quasar");
srcTopTypeComboBox->addItem("Quasar");
srcTopTypeLayout->addWidget(srcTopTypeComboBox,0,0);
srcTopTypeGroupBox->setLayout(srcTopTypeLayout);
srcTopMainLayout->addWidget(srcTopTypeGroupBox,0,0);
//Connections
connect(srcTopTypeComboBox, SIGNAL(activated(QString)), this, SLOT(createGroupBoxTophatSigma(QString)));
}Code: Alles auswählen
void MyChild::createGroupBoxTophatSigma(QString type){
//existierende GroupBox löschen
if(srcTopSigmaGroupBox){
srcTopMainLayout->removeWidget(srcTopSigmaGroupBox);
delete srcTopSigmaGroupBox;
}
srcTopSigmaGroupBox = new QGroupBox(tr("Sigma"));
QGridLayout* srcTopSigmaGroupBoxLayout = new QGridLayout();
if(type == "Circle"){
qDebug("Circle");
QLineEdit* srcTopSigmaLineEdit = new QLineEdit;
srcTopSigmaGroupBoxLayout->addWidget(srcTopSigmaLineEdit,0,0);
srcTopSigmaGroupBox->setLayout(srcTopSigmaGroupBoxLayout);
}
else{
if ((type == "Annular") || (type == "Quasar")){
qDebug("Annular oder Quasar");
QLabel* srcTopSigmaInnerLabel = new QLabel("Inner:");
QLabel* srcTopSigmaOuterLabel = new QLabel("Outer:");
QLineEdit* srcTopSigmaInnerLineEdit = new QLineEdit;
QLineEdit* srcTopSigmaOuterLineEdit = new QLineEdit;
srcTopSigmaGroupBoxLayout->addWidget(srcTopSigmaInnerLabel,0,0);
srcTopSigmaGroupBoxLayout->addWidget(srcTopSigmaInnerLineEdit,0,1);
srcTopSigmaGroupBoxLayout->addWidget(srcTopSigmaOuterLabel,1,0);
srcTopSigmaGroupBoxLayout->addWidget(srcTopSigmaOuterLineEdit,1,1);
srcTopSigmaGroupBoxLayout->setColumnMinimumWidth(1,100);
srcTopSigmaGroupBox->setLayout(srcTopSigmaGroupBoxLayout);
}
else{
qDebug("Multi-Quasar");
}
}
srcTopMainLayout->addWidget(srcTopSigmaGroupBox);
setLayout(srcTopMainLayout);
}Stimmt etwas im Aufbau meines Layouts nicht? Habe ich etwas grundlegendes nicht beachtet? Im Qt-Buch habe ich leider auch nichts zu dem Thema gefunden und die in der Suche vorgeschlagenen Sachen habe ich schon versucht
Vielen Dank für eure Hilfe.
Viele Grüße
Jana