Widgets mittels layout nachträglich skalieren!?
Verfasst: 10. Juli 2007 16:15
Hi Leute,
ich habe ein kleines Problem was die Layouts in meinem Programm angeht.
Ich habe ein Widget welches ein QVBoxLayout benutzt um ein Gridlayout mit ensprechenden Widgets anzuzeigen.
Sobald sich ein bestimmer Wert dieser Widgets ändert, werden zwei selbstprogrammierte Diagramwidgets angezeigt welches zu dem QVBoxLayout vorher hinzugefügt wurden. (bei initialisierung hide() sobald sich ein wert ändert lass ich sie mittels show() anzeigen)
Wie ihr am den angehängten Screenshot sehen könnt klappt das zwar aber das Widget wird anscheinend nicht skaliert. die Diagramme haben eine Mindestgrösse angegeben, der wird aber wohl nicht beachtet.
Hier noch ein wenig Code des Widgets:
Code wenn sich ein bestimmer Wert ändert:
Ich bin mir sicher dass es kein grosses Problem ist, aber leider komm ich einfach nicht auf die Lösung.
Bin für jede Hilfe dankbar !
Grüsse Alex
ich habe ein kleines Problem was die Layouts in meinem Programm angeht.
Ich habe ein Widget welches ein QVBoxLayout benutzt um ein Gridlayout mit ensprechenden Widgets anzuzeigen.
Sobald sich ein bestimmer Wert dieser Widgets ändert, werden zwei selbstprogrammierte Diagramwidgets angezeigt welches zu dem QVBoxLayout vorher hinzugefügt wurden. (bei initialisierung hide() sobald sich ein wert ändert lass ich sie mittels show() anzeigen)
Wie ihr am den angehängten Screenshot sehen könnt klappt das zwar aber das Widget wird anscheinend nicht skaliert. die Diagramme haben eine Mindestgrösse angegeben, der wird aber wohl nicht beachtet.
Hier noch ein wenig Code des Widgets:
Code: Alles auswählen
m_pWidgetLayout = new QVBoxLayout(this);
m_pLayout = new QGridLayout(this);
m_pLayout->addWidget(new QLabel("Datenquelle",this),0,0);
m_pLE_wSource = new SourceWidget(this);
m_pLE_wSource->setValue(m_pStructure->wSource);
m_pLayout->addWidget(m_pLE_wSource,0,1);
connect(m_pLE_wSource,SIGNAL(valueChanged()),this,SLOT(sourceChanged()));
m_pLayout->addWidget(new QLabel("min. Sensorbereich",this),1,0);
m_pLE_cSensorMin = new QLineEdit(this);
m_pLE_cSensorMin->setText(QString().setNum(m_pStructure->cSensorMin));
m_pLayout->addWidget(m_pLE_cSensorMin,1,1);
m_pLayout->addWidget(new QLabel("max. Sensorbereich",this),2,0);
m_pLE_cSensorMax = new QLineEdit(this);
m_pLE_cSensorMax->setText(QString().setNum(m_pStructure->cSensorMax));
m_pLayout->addWidget(m_pLE_cSensorMax,2,1);
m_pLabelcRefValue = new QLabel(tr("Verstärkungsfaktor der CAN-DATEN"),this);
m_pLayout->addWidget(m_pLabelcRefValue ,3,0);
m_pLE_cRefValue = new QLineEdit(this);
//m_pLE_fStuetz->setText(QString().setNum(m_pStructure->fStuetz));
m_pLayout->addWidget(m_pLE_cRefValue,3,1);
m_pDiagramRefValue = new DiagramWidget(this,tr("Stützpunkte auf der Kennlinie")); // wird nicht automatisch angezeigt
QStringList values;
QStringList names;
for(int i = 0; i < 6; i++)
{
values << QString().setNum(m_pStructure->cRefValue[i]);
names << QString("Stützpunkt %1").arg(i);
}
m_pDiagramRefValue->setValues(names,values);
m_pLabelStuetz = new QLabel(tr("Nachrichtentimeout"),this);
m_pLayout->addWidget(m_pLabelStuetz ,4,0);
m_pLE_fStuetz = new QLineEdit(this);
//m_pLE_fStuetz->setText(QString().setNum(m_pStructure->fStuetz));
m_pLayout->addWidget(m_pLE_fStuetz,4,1);
m_pDiagramStuetz = new DiagramWidget(this,tr("Stützpunkte auf der Kennlinienabschnitte")); // wird nicht automatisch angezeigt
for(int i = 0; i < 6; i++)
{
values << QString().setNum(m_pStructure->fStuetz[i]);
names << QString("Stützpunkt %1").arg(i);
}
m_pDiagramStuetz->setValues(names,values);
m_pLayout->addWidget(new QLabel("Offset",this),5,0);
m_pLE_fOffset = new QLineEdit(this);
m_pLE_fOffset->setText(QString().setNum(m_pStructure->fOffset));
m_pLayout->addWidget(m_pLE_fOffset,5,1);
m_pLayout->addWidget(new QLabel("Empfangs ID",this),6,0);
m_pLE_dwCanID = new QLineEdit(this);
m_pLE_dwCanID->setText(FormatConv::longToHex(m_pStructure->dwCanID));
m_pLayout->addWidget(m_pLE_dwCanID,6,1);
m_pLayout->addWidget(new QLabel("Verzögerungszeit der Sensorprüfung Basis 500ms",this),7,0);
m_pLE_cCheckDelay = new QLineEdit(this);
m_pLE_cCheckDelay->setText(QString().setNum(m_pStructure->cCheckDelay));
m_pLayout->addWidget(m_pLE_cCheckDelay,7,1);
OkButton *pOKButton = new OkButton(this);
m_pLayout->addWidget(pOKButton,8,1);
connect(pOKButton,SIGNAL(clicked(bool)),this,SLOT(saveValues(bool)));
// layout
m_pWidgetLayout->addLayout(m_pLayout);
m_pWidgetLayout->addWidget(m_pDiagramRefValue);
m_pDiagramRefValue->hide();
m_pWidgetLayout->addWidget(m_pDiagramStuetz);
m_pDiagramStuetz->hide();
setLayout(m_pWidgetLayout);
Code: Alles auswählen
if(m_pLE_wSource->indexOfEingang() > 1)
{
// es wurden io eingänge ausgewählt, also werden die diagramme angezeigt
m_pLabelcRefValue->hide();
m_pLabelStuetz->hide();
m_pLE_cRefValue->hide();
m_pLE_fStuetz->hide();
m_pDiagramRefValue->show();
m_pDiagramStuetz->show();
}
else
{
m_pLabelcRefValue->show();
m_pLE_cRefValue->show();
m_pLabelStuetz->show();
m_pLE_fStuetz->show();
m_pDiagramRefValue->hide();
m_pDiagramStuetz->hide();
}
m_pLayout->update();
m_pWidgetLayout->update();Bin für jede Hilfe dankbar !
Grüsse Alex