@@ -349,10 +349,11 @@ void QgsAttributeForm::init()
349
349
if ( !formWidget )
350
350
{
351
351
formWidget = new QWidget ( this );
352
- QFormLayout* formLayout = new QFormLayout ( formWidget );
353
- formWidget->setLayout ( formLayout );
352
+ QGridLayout* gridLayout = new QGridLayout ( formWidget );
353
+ formWidget->setLayout ( gridLayout );
354
354
layout ()->addWidget ( formWidget );
355
355
356
+ int row = 0 ;
356
357
Q_FOREACH ( const QgsField& field, mLayer ->pendingFields ().toList () )
357
358
{
358
359
int idx = mLayer ->fieldNameIndex ( field.name () );
@@ -361,25 +362,33 @@ void QgsAttributeForm::init()
361
362
362
363
const QString widgetType = mLayer ->editorWidgetV2 ( idx );
363
364
const QgsEditorWidgetConfig widgetConfig = mLayer ->editorWidgetV2Config ( idx );
365
+ bool labelOnTop = mLayer ->labelOnTop ( idx );
364
366
365
367
// This will also create the widget
368
+ QWidget *l = new QLabel ( fieldName );
366
369
QgsEditorWidgetWrapper* eww = QgsEditorWidgetRegistry::instance ()->create ( widgetType, mLayer , idx, widgetConfig, 0 , this , mContext );
370
+ QWidget *w = eww ? eww->widget () : new QLabel ( QString ( " <p style=\" color: red; font-style: italic;\" >Failed to create widget with type '%1'</p>" ).arg ( widgetType ) );
371
+
367
372
if ( eww )
368
- {
369
373
mWidgets .append ( eww );
370
- formLayout->addRow ( new QLabel ( fieldName ), eww->widget () );
374
+
375
+ if ( labelOnTop )
376
+ {
377
+ gridLayout->addWidget ( l, row++, 0 , 1 , 2 );
378
+ gridLayout->addWidget ( w, row++, 0 , 1 , 2 );
371
379
}
372
380
else
373
381
{
374
- formLayout->addRow ( new QLabel ( fieldName ), new QLabel ( QString ( " <p style=\" color: red; font-style: italic;\" >Failed to create widget with type '%1'</p>" ).arg ( widgetType ) ) );
382
+ gridLayout->addWidget ( l, row, 0 );
383
+ gridLayout->addWidget ( w, row++, 1 );
375
384
}
376
385
}
377
386
378
387
Q_FOREACH ( const QgsRelation& rel, QgsProject::instance ()->relationManager ()->referencedRelations ( mLayer ) )
379
388
{
380
389
QgsRelationWidgetWrapper* rww = new QgsRelationWidgetWrapper ( mLayer , rel, 0 , this );
381
390
rww->setContext ( mContext );
382
- formLayout-> addRow ( rww->widget () );
391
+ gridLayout-> addWidget ( rww->widget (), row++, 0 , 1 , 2 );
383
392
mWidgets .append ( rww );
384
393
}
385
394
}
@@ -472,7 +481,7 @@ void QgsAttributeForm::initPython()
472
481
}
473
482
}
474
483
475
- QWidget* QgsAttributeForm::createWidgetFromDef ( const QgsAttributeEditorElement* widgetDef, QWidget* parent, QgsVectorLayer* vl, QgsAttributeEditorContext& context, QString& labelText, bool & labelOnTop )
484
+ QWidget* QgsAttributeForm::createWidgetFromDef ( const QgsAttributeEditorElement * widgetDef, QWidget * parent, QgsVectorLayer * vl, QgsAttributeEditorContext & context, QString & labelText, bool & labelOnTop )
476
485
{
477
486
QWidget *newWidget = 0 ;
478
487
@@ -548,7 +557,7 @@ QWidget* QgsAttributeForm::createWidgetFromDef( const QgsAttributeEditorElement*
548
557
bool labelOnTop;
549
558
QWidget* editor = createWidgetFromDef ( childDef, myContainer, vl, context, labelText, labelOnTop );
550
559
551
- if ( labelText == QString::null )
560
+ if ( labelText. isNull () )
552
561
{
553
562
gbLayout->addWidget ( editor, index, 0 , 1 , 2 );
554
563
}
0 commit comments