}
+QWidget* ModuleBase_PageBase::pageWidget()
+{
+ return dynamic_cast<QWidget*>(this);
+}
+
void ModuleBase_PageBase::addModelWidget(ModuleBase_ModelWidget* theWidget)
{
placeModelWidget(theWidget);
void ModuleBase_PageBase::clearPage()
{
- qDeleteAll(pageLayout()->children());
myWidgetList.clear();
+
+ QLayoutItem *aChild;
+ while ((aChild = pageLayout()->takeAt(0)) != 0) {
+ if(aChild->widget()) {
+ delete aChild->widget();
+ } else {
+ delete aChild;
+ }
+ }
+
+ // Issue #460: this patch is necessary since the row stretch information
+ // is stored independently on the items: when the items are removed
+ // from the layout the stretch information is kept, so in the next
+ // filling of the layout some "additional" (old) rows may be stretched
+ // without necessity.
+ // In this patch we clear the stretch information specifying the default value: 0.
+ QGridLayout* aLayout = dynamic_cast<QGridLayout*>( pageLayout() );
+ if( aLayout )
+ {
+ int r = aLayout->rowCount();
+ for( int i=0; i<r; i++ )
+ aLayout->setRowStretch( i, 0 );
+ }
}
-void ModuleBase_PageBase::takeFocus()
+bool ModuleBase_PageBase::takeFocus()
{
if(myWidgetList.isEmpty())
- return;
+ return false;
- myWidgetList.first()->focusTo();
+ return myWidgetList.first()->focusTo();
}
QList<ModuleBase_ModelWidget*> ModuleBase_PageBase::modelWidgets()
{
return myWidgetList;
}
+
+void ModuleBase_PageBase::alignToTop()
+{
+ bool hasExpanding = false;
+ QList<QWidget *> aListToCheck;
+ ModuleBase_ModelWidget* aModelWidget;
+ foreach(aModelWidget, myWidgetList) {
+ aListToCheck << aModelWidget->getControls();
+ }
+ foreach(QWidget* eachWidget, aListToCheck) {
+ QSizePolicy::Policy aVPolicy = eachWidget->sizePolicy().verticalPolicy();
+ if(aVPolicy & QSizePolicy::ExpandFlag) {
+ hasExpanding = true;
+ break;
+ }
+ }
+ if(!hasExpanding) {
+ addPageStretch();
+ }
+}