@@ -1059,22 +1059,31 @@ void QgsAttributeForm::init()
1059
1059
}
1060
1060
}
1061
1061
1062
+ QTabWidget* tabWidget = nullptr ;
1063
+
1062
1064
// Tab layout
1063
1065
if ( !formWidget && mLayer ->editFormConfig ()->layout () == QgsEditFormConfig::TabLayout )
1064
1066
{
1065
- QTabWidget* tabWidget = new QTabWidget ();
1066
- layout->addWidget ( tabWidget );
1067
+ int row = 0 ;
1068
+ int column = 0 ;
1069
+ int columnCount = 1 ;
1067
1070
1068
1071
Q_FOREACH ( QgsAttributeEditorElement* widgDef, mLayer ->editFormConfig ()->tabs () )
1069
1072
{
1070
- QWidget* tabPage = new QWidget ( tabWidget );
1071
-
1072
- tabWidget->addTab ( tabPage, widgDef->name () );
1073
- QGridLayout* tabPageLayout = new QGridLayout ();
1074
- tabPage->setLayout ( tabPageLayout );
1075
-
1076
1073
if ( widgDef->type () == QgsAttributeEditorElement::AeTypeContainer )
1077
1074
{
1075
+ if ( !tabWidget )
1076
+ {
1077
+ tabWidget = new QTabWidget ();
1078
+ layout->addWidget ( tabWidget, row, column, 1 , 2 );
1079
+ }
1080
+
1081
+ QWidget* tabPage = new QWidget ( tabWidget );
1082
+
1083
+ tabWidget->addTab ( tabPage, widgDef->name () );
1084
+ QGridLayout* tabPageLayout = new QGridLayout ();
1085
+ tabPage->setLayout ( tabPageLayout );
1086
+
1078
1087
QgsAttributeEditorContainer* containerDef = dynamic_cast <QgsAttributeEditorContainer*>( widgDef );
1079
1088
if ( !containerDef )
1080
1089
continue ;
@@ -1085,10 +1094,39 @@ void QgsAttributeForm::init()
1085
1094
}
1086
1095
else
1087
1096
{
1088
- QgsDebugMsg ( " No support for fields in attribute editor on top level" );
1097
+ tabWidget = nullptr ;
1098
+ WidgetInfo widgetInfo = createWidgetFromDef ( widgDef, container, mLayer , mContext );
1099
+ QLabel* label = new QLabel ( widgetInfo.labelText );
1100
+ if ( columnCount > 1 && !widgetInfo.labelOnTop )
1101
+ {
1102
+ label->setAlignment ( Qt::AlignRight | Qt::AlignVCenter );
1103
+ }
1104
+
1105
+ label->setBuddy ( widgetInfo.widget );
1106
+
1107
+ if ( widgetInfo.labelOnTop )
1108
+ {
1109
+ QVBoxLayout* c = new QVBoxLayout ();
1110
+ label->setSizePolicy ( QSizePolicy::Preferred, QSizePolicy::Fixed );
1111
+ c->layout ()->addWidget ( label );
1112
+ c->layout ()->addWidget ( widgetInfo.widget );
1113
+ layout->addLayout ( c, row, column, 1 , 2 );
1114
+ column += 2 ;
1115
+ }
1116
+ else
1117
+ {
1118
+ layout->addWidget ( label, row, column++ );
1119
+ layout->addWidget ( widgetInfo.widget , row, column++ );
1120
+ }
1121
+ }
1122
+
1123
+ if ( column >= columnCount * 2 )
1124
+ {
1125
+ column = 0 ;
1126
+ row += 1 ;
1089
1127
}
1090
1128
}
1091
- formWidget = tabWidget ;
1129
+ formWidget = container ;
1092
1130
}
1093
1131
1094
1132
// Autogenerate Layout
@@ -1188,7 +1226,7 @@ void QgsAttributeForm::init()
1188
1226
{
1189
1227
mButtonBox = new QDialogButtonBox ( QDialogButtonBox::Ok | QDialogButtonBox::Cancel );
1190
1228
mButtonBox ->setObjectName ( " buttonBox" );
1191
- layout->addWidget ( mButtonBox );
1229
+ layout->addWidget ( mButtonBox , layout-> rowCount (), 0 , 1 , layout-> columnCount () );
1192
1230
}
1193
1231
mButtonBox ->setVisible ( buttonBoxVisible );
1194
1232
0 commit comments