DefaultDataForm::DefaultDataForm(const DataItem &item) : m_widget(0), m_isChanged(false), m_incompleteWidgets(0), m_buttonsBox(0), m_hasSubitems(item.hasSubitems() || item.isAllowedModifySubitems()) { DataLayout *dataLayout = 0; QVBoxLayout *layout = 0; setObjectName(item.name()); setWindowTitle(item.title()); if (item.isAllowedModifySubitems()) { layout = new QVBoxLayout(this); ModifiableWidget *w = new ModifiableWidget(item, this, this); m_widget = w; layout->addWidget(w); if (!w->isExpandable()) { QSpacerItem *spacer = new QSpacerItem(0, 0, QSizePolicy::Minimum, QSizePolicy::Expanding); layout->addItem(spacer); } } else { dataLayout = new DataLayout(item, this, item.property<quint16>("columns", 1), this); QVariant spacing = item.property("horizontalSpacing"); if (spacing.canConvert(QVariant::Int)) dataLayout->setHorizontalSpacing(spacing.toInt()); spacing = item.property("verticalSpacing"); if (spacing.canConvert(QVariant::Int)) dataLayout->setVerticalSpacing(spacing.toInt()); m_widget = dataLayout; if (item.hasSubitems()) dataLayout->addDataItems(item.subitems()); else dataLayout->addDataItem(item); if (!dataLayout->isExpandable()) dataLayout->addSpacer(); } }