@@ -393,7 +393,7 @@ void QgsAttributeForm::init()
393
393
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 ) );
394
394
395
395
if ( eww )
396
- mWidgets . append ( eww );
396
+ addWidgetWrapper ( eww );
397
397
398
398
if ( labelOnTop )
399
399
{
@@ -522,7 +522,7 @@ QWidget* QgsAttributeForm::createWidgetFromDef( const QgsAttributeEditorElement
522
522
523
523
QgsEditorWidgetWrapper* eww = QgsEditorWidgetRegistry::instance ()->create ( widgetType, mLayer , fldIdx, widgetConfig, 0 , this , mContext );
524
524
newWidget = eww->widget ();
525
- mWidgets . append ( eww );
525
+ addWidgetWrapper ( eww );
526
526
}
527
527
528
528
labelOnTop = mLayer ->labelOnTop ( fieldDef->idx () );
@@ -618,6 +618,25 @@ QWidget* QgsAttributeForm::createWidgetFromDef( const QgsAttributeEditorElement
618
618
return newWidget;
619
619
}
620
620
621
+ void QgsAttributeForm::addWidgetWrapper ( QgsEditorWidgetWrapper* eww )
622
+ {
623
+ Q_FOREACH ( QgsWidgetWrapper* ww, mWidgets )
624
+ {
625
+ QgsEditorWidgetWrapper* meww = qobject_cast<QgsEditorWidgetWrapper*>( ww );
626
+ if ( meww )
627
+ {
628
+ if ( meww->field () == eww->field () )
629
+ {
630
+ connect ( meww, SIGNAL (valueChanged (QVariant)), eww, SLOT (setValue (QVariant)) );
631
+ connect ( eww, SIGNAL (valueChanged (QVariant)), meww, SLOT (setValue (QVariant)) );
632
+ break ;
633
+ }
634
+ }
635
+ }
636
+
637
+ mWidgets .append ( eww );
638
+ }
639
+
621
640
void QgsAttributeForm::createWrappers ()
622
641
{
623
642
QList<QWidget*> myWidgets = findChildren<QWidget*>();
@@ -650,7 +669,7 @@ void QgsAttributeForm::createWrappers()
650
669
int idx = mLayer ->fieldNameIndex ( field.name () );
651
670
652
671
QgsEditorWidgetWrapper* eww = QgsEditorWidgetRegistry::instance ()->create ( widgetType, mLayer , idx, widgetConfig, myWidget, this , mContext );
653
- mWidgets . append ( eww );
672
+ addWidgetWrapper ( eww );
654
673
}
655
674
}
656
675
}
0 commit comments