/*! \internal */ QLayout *QFormBuilder::createLayout(const QString &layoutName, QObject *parent, const QString &name) { QLayout *l = 0; QWidget *parentWidget = qobject_cast<QWidget*>(parent); QLayout *parentLayout = qobject_cast<QLayout*>(parent); Q_ASSERT(parentWidget || parentLayout); #define DECLARE_WIDGET(W, C) #define DECLARE_COMPAT_WIDGET(W, C) #define DECLARE_LAYOUT(L, C) \ if (layoutName == QLatin1String(#L)) { \ Q_ASSERT(l == 0); \ l = parentLayout \ ? new L() \ : new L(parentWidget); \ } #include "widgets.table" #undef DECLARE_LAYOUT #undef DECLARE_COMPAT_WIDGET #undef DECLARE_WIDGET if (l) { l->setObjectName(name); if (parentLayout) { QWidget *w = qobject_cast<QWidget *>(parentLayout->parent()); if (w && w->inherits("Q3GroupBox")) { l->setContentsMargins(w->style()->pixelMetric(QStyle::PM_LayoutLeftMargin), w->style()->pixelMetric(QStyle::PM_LayoutTopMargin), w->style()->pixelMetric(QStyle::PM_LayoutRightMargin), w->style()->pixelMetric(QStyle::PM_LayoutBottomMargin)); QGridLayout *grid = qobject_cast<QGridLayout *>(l); if (grid) { grid->setHorizontalSpacing(-1); grid->setVerticalSpacing(-1); } else { l->setSpacing(-1); } l->setAlignment(Qt::AlignTop); } } } else { qWarning() << QCoreApplication::translate("QFormBuilder", "The layout type `%1' is not supported.").arg(layoutName); } return l; }