@@ -466,12 +466,14 @@ void QgsRelationReferenceWidget::init()
466
466
int idx = mReferencedLayer ->fieldNameIndex ( fieldName );
467
467
QComboBox* cb = new QComboBox ();
468
468
cb->setProperty ( " Field" , fieldName );
469
+ cb->setProperty ( " FieldAlias" , mReferencedLayer ->attributeDisplayName ( idx ) );
469
470
mFilterComboBoxes << cb;
470
471
mReferencedLayer ->uniqueValues ( idx, uniqueValues );
471
- cb->addItem ( mReferencedLayer ->attributeAlias ( idx ). isEmpty () ? fieldName : mReferencedLayer -> attributeAlias ( idx ) );
472
+ cb->addItem ( mReferencedLayer ->attributeDisplayName ( idx ) );
472
473
QVariant nullValue = QSettings ().value ( " qgis/nullValue" , " NULL" );
473
474
cb->addItem ( nullValue.toString (), QVariant ( mReferencedLayer ->fields ().at ( idx ).type () ) );
474
475
476
+ std::sort ( uniqueValues.begin (), uniqueValues.end (), qgsVariantLessThan );
475
477
Q_FOREACH ( const QVariant& v, uniqueValues )
476
478
{
477
479
cb->addItem ( v.toString (), v );
@@ -495,8 +497,8 @@ void QgsRelationReferenceWidget::init()
495
497
{
496
498
for ( int i = 0 ; i < mFilterComboBoxes .count () - 1 ; ++i )
497
499
{
498
- QVariant cv = ft.attribute ( mFilterFields [i] );
499
- QVariant nv = ft.attribute ( mFilterFields [ i + 1 ] );
500
+ QVariant cv = ft.attribute ( mFilterFields . at ( i ) );
501
+ QVariant nv = ft.attribute ( mFilterFields . at ( i + 1 ) );
500
502
QString cf = cv.isNull () ? nullValue.toString () : cv.toString ();
501
503
QString nf = nv.isNull () ? nullValue.toString () : nv.toString ();
502
504
mFilterCache [mFilterFields [i]][cf] << nf;
@@ -817,14 +819,17 @@ void QgsRelationReferenceWidget::filterChanged()
817
819
{
818
820
cb->blockSignals ( true );
819
821
cb->clear ();
820
- cb->addItem ( cb->property ( " Field " ).toString () );
822
+ cb->addItem ( cb->property ( " FieldAlias " ).toString () );
821
823
822
824
// ccb = scb
823
825
// cb = scb + 1
826
+ QStringList texts;
824
827
Q_FOREACH ( const QString& txt, mFilterCache [ccb->property ( " Field" ).toString ()][ccb->currentText ()] )
825
828
{
826
- cb-> addItem ( txt ) ;
829
+ texts << txt ;
827
830
}
831
+ texts.sort ();
832
+ cb->addItems ( texts );
828
833
829
834
cb->setEnabled ( true );
830
835
cb->blockSignals ( false );
0 commit comments