@@ -49,11 +49,11 @@ int QgsAttributeForm::sFormCounter = 0;
4949
5050QgsAttributeForm::QgsAttributeForm ( QgsVectorLayer* vl, const QgsFeature &feature, const QgsAttributeEditorContext &context, QWidget* parent )
5151 : QWidget( parent )
52- , mInvalidConstraintMessageBarItem( nullptr )
5352 , mLayer( vl )
5453 , mMessageBar( nullptr )
5554 , mMultiEditUnsavedMessageBarItem( nullptr )
5655 , mMultiEditMessageBarItem( nullptr )
56+ , mInvalidConstraintMessage( nullptr )
5757 , mContext( context )
5858 , mButtonBox( nullptr )
5959 , mSearchButtonBox( nullptr )
@@ -762,29 +762,29 @@ bool QgsAttributeForm::currentFormFeature( QgsFeature &feature )
762762
763763void QgsAttributeForm::clearInvalidConstraintsMessage ()
764764{
765- if ( mInvalidConstraintMessageBarItem != nullptr )
766- {
767- mMessageBar ->popWidget ( mInvalidConstraintMessageBarItem );
768- mInvalidConstraintMessageBarItem = nullptr ;
769- }
765+ mInvalidConstraintMessage ->clear ();
766+ mInvalidConstraintMessage ->setStyleSheet ( " " );
770767}
771768
772769void QgsAttributeForm::displayInvalidConstraintMessage ( const QStringList &f,
773770 const QStringList &d )
774771{
775772 clearInvalidConstraintsMessage ();
776773
777- // show only the third first error
774+ // show only the third first errors (to avoid a too long label)
778775 int max = 3 ;
779776 int size = f.size () > max ? max : f.size ();
780777 QString descriptions;
781778 for ( int i = 0 ; i < size; i++ )
782- descriptions += " <br />- " + f[i] + " : " + d[i];
779+ descriptions += QString ( " <li>%1: <i>%2</i></li>" ).arg ( f[i] ).arg ( d[i] );
780+
781+ QString icPath = QgsApplication::iconPath ( " /mIconWarn.png" );
783782
784- mInvalidConstraintMessageBarItem =
785- new QgsMessageBarItem ( tr ( " Invalid fields: " ),
786- descriptions, QgsMessageBar::WARNING );
787- mMessageBar ->pushItem ( mInvalidConstraintMessageBarItem );
783+ QString title = QString ( " <img src=\" %1\" > <b>%2:" ).arg ( icPath ).arg ( tr ( " Invalid fields" ) );
784+ QString msg = QString ( " %1</b><ul>%2</ul>" ).arg ( title ).arg ( descriptions ) ;
785+
786+ mInvalidConstraintMessage ->setText ( msg );
787+ mInvalidConstraintMessage ->setStyleSheet ( " QLabel { background-color : #ffc800; }" );
788788}
789789
790790bool QgsAttributeForm::currentFormValidConstraints ( QStringList &invalidFields,
@@ -1025,6 +1025,10 @@ void QgsAttributeForm::init()
10251025 mMessageBar = new QgsMessageBar ( this );
10261026 mMessageBar ->setSizePolicy ( QSizePolicy::MinimumExpanding, QSizePolicy::Fixed );
10271027 vl->addWidget ( mMessageBar );
1028+
1029+ mInvalidConstraintMessage = new QLabel ( this );
1030+ vl->addWidget ( mInvalidConstraintMessage );
1031+
10281032 setLayout ( vl );
10291033
10301034 // Get a layout
0 commit comments