void REIXSXASScanConfigurationView::setupUi() { setWindowTitle("Form"); // mono groupBox layout QFormLayout *monoGroupBoxFormLayout = new QFormLayout(); monoGroupBoxFormLayout->setFieldGrowthPolicy(QFormLayout::FieldsStayAtSizeHint); monoGroupBoxFormLayout->setLabelAlignment(Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter); applyGratingBox_ = new QCheckBox("Grating"); gratingBox_ = new QComboBox(); monoGroupBoxFormLayout->setWidget(0, QFormLayout::LabelRole, applyGratingBox_); monoGroupBoxFormLayout->setWidget(0, QFormLayout::FieldRole, gratingBox_); applyMirrorBox_ = new QCheckBox("Mirror"); mirrorBox_ = new QComboBox(); monoGroupBoxFormLayout->setWidget(1, QFormLayout::LabelRole, applyMirrorBox_); monoGroupBoxFormLayout->setWidget(1, QFormLayout::FieldRole, mirrorBox_); applySlitWidthBox_ = new QCheckBox("Slit Width"); slitWidthBox_ = createDoubleSpinBox(0, -500, 500, " um", 1, 5); monoGroupBoxFormLayout->setWidget(2, QFormLayout::LabelRole, applySlitWidthBox_); monoGroupBoxFormLayout->setWidget(2, QFormLayout::FieldRole, slitWidthBox_); monoGroupBoxFormLayout->setItem(3, QFormLayout::FieldRole, new QSpacerItem(20, 40, QSizePolicy::Minimum, QSizePolicy::Expanding)); estimatedTimeLabel_ = new QLabel("0 s"); monoGroupBoxFormLayout->setWidget(4, QFormLayout::LabelRole, new QLabel("Estimated time:")); monoGroupBoxFormLayout->setWidget(4, QFormLayout::FieldRole, estimatedTimeLabel_); totalPointsLabel_ = new QLabel("0"); monoGroupBoxFormLayout->setWidget(5, QFormLayout::LabelRole, new QLabel("Total points:")); monoGroupBoxFormLayout->setWidget(5, QFormLayout::FieldRole, totalPointsLabel_); // polarization groupBox layout QFormLayout *polarizationGroupBoxFormLayout = new QFormLayout(); applyPolarizationBox_ = new QCheckBox("Polarization"); polarizationBox_ = new QComboBox(); polarizationGroupBoxFormLayout->setWidget(0, QFormLayout::LabelRole, applyPolarizationBox_); polarizationGroupBoxFormLayout->setWidget(0, QFormLayout::FieldRole, polarizationBox_); polarizationAngleBox_ = createDoubleSpinBox(0, -180, 180, " deg", 1, 10); polarizationGroupBoxFormLayout->setWidget(1, QFormLayout::LabelRole, new QLabel("Angle")); polarizationGroupBoxFormLayout->setWidget(1, QFormLayout::FieldRole, polarizationAngleBox_); // scan metal info layout QFormLayout *scanMetaInfoFormLayout = new QFormLayout(); scanMetaInfoFormLayout->setFieldGrowthPolicy(QFormLayout::AllNonFixedFieldsGrow); nameEdit_ = new QLineEdit(); scanMetaInfoFormLayout->setWidget(0, QFormLayout::LabelRole, new QLabel("Name")); scanMetaInfoFormLayout->setWidget(0, QFormLayout::FieldRole, nameEdit_); sampleSelector_ = new AMSamplePre2013Selector(AMDatabase::database("user")); scanMetaInfoFormLayout->setWidget(1, QFormLayout::LabelRole, new QLabel("Sample")); scanMetaInfoFormLayout->setWidget(1, QFormLayout::FieldRole, sampleSelector_); namedAutomaticallyBox_ = new QCheckBox("from current sample"); scanMetaInfoFormLayout->setWidget(2, QFormLayout::LabelRole, new QLabel("Set automatically")); scanMetaInfoFormLayout->setWidget(2, QFormLayout::FieldRole, namedAutomaticallyBox_); // layout the components topFrame_ = new AMTopFrame("Setup XAS Scan", QIcon(":/utilities-system-monitor.png")); QGroupBox *monoGroupBox = new QGroupBox("Monochromator"); monoGroupBox->setLayout(monoGroupBoxFormLayout); QGroupBox *polarizationGroupBox = new QGroupBox("Polarization"); polarizationGroupBox->setLayout(polarizationGroupBoxFormLayout); QGroupBox *scanMetaInfoGroupBox = new QGroupBox("Scan Meta-Information"); scanMetaInfoGroupBox->setLayout(scanMetaInfoFormLayout); QHBoxLayout *horizontalLayout = new QHBoxLayout(); horizontalLayout->addWidget(monoGroupBox); horizontalLayout->addItem(new QSpacerItem(0, 20, QSizePolicy::Expanding, QSizePolicy::Minimum)); horizontalLayout->addWidget(polarizationGroupBox); horizontalLayout->addItem(new QSpacerItem(0, 20, QSizePolicy::Expanding, QSizePolicy::Minimum)); horizontalLayout->addWidget(scanMetaInfoGroupBox); QVBoxLayout *innerVLayout = new QVBoxLayout(); innerVLayout->setSpacing(0); innerVLayout->setContentsMargins(12, 12, 12, 12); innerVLayout->addLayout(horizontalLayout); innerVLayout->insertWidget(0, new AMStepScanAxisView("Region Configuration", config_)); innerVLayout->addStretch(); QVBoxLayout *outerVLayout = new QVBoxLayout(); outerVLayout->insertWidget(0, topFrame_); outerVLayout->setContentsMargins(0, 0, 0, 0); outerVLayout->addLayout(innerVLayout); setLayout(outerVLayout); }