Since nobody posted I decided to give my comments, even though I have not worked with mentioned classes. As far as I see your problem,
You need to be able: 1. to be notified when selection in combo-box is changed This can be done by overriding createEditor and connecting combobox signal (mostly likely you would want activated (const QString& ) ) to custom slot. I recommend to use Qt::QueuedConnection. This should insure that slots is not called when data is still changing. 2. apply filter to model index based on selection value. Do this in the custom slot I mentioned above. Only difficulty might be to find out index for which slot is called. I would subclassed QComboBox, added variable where I would store QModelIndex it was created for and signal activated ( const QModelIndex& , const QString& ), which I would emit when selection changed This way you will have enough information about where action happened and what current selection is. So you might find out index you have to apply filter to. Regards, Alex On Tue, Jan 10, 2012 at 9:45 AM, Michele Ciampichetti <cia.mich...@gmail.com> wrote: > Hello to everybody, > To solve this problem, i trying to subclass a QSqlRelationalDelegate, so > that, at che column of second combobox, I can apply a filter on the > QSqlTableModel returned by relationalModel; but i can't do this, because the > delegate use only a const QModelIndex so i can't access the complete model > and use the setFilter method. This is my code: > > void setEditorData(QWidget *editor, const QModelIndex &index) const > { > switch(index.column()) { > case 4:{ > const QSqlRelationalTableModel * sqlModel = qobject_cast<const > QSqlRelationalTableModel *>(index.model()); > > sqlModel->setFilter(QString("CodProvincia=%1").arg(sqlModel->index(index.row,10).data().toInt()); > QComboBox * combo = qobject_cast<QComboBox *> (editor); > if (!sqlModel || !combo){ > QItemDelegate::setEditorData(editor,index); > return; > } > > combo->setCurrentIndex(combo->findText(sqlModel->data(index).toString())); > break;} > > But it return an error, because the index is only a constant. This is the > error: > > ..\picloaddelegate.h:24: error: passing 'const QSqlRelationalTableModel' > as 'this' argument of 'virtual void QSqlTableModel::setFilter(const > QString&)' discards qualifiers > > > Any ideas of how resolve it? > > > thanks a lot for your time! > > Michele > > > > > 2012/1/9 Michele Ciampichetti <cia.mich...@gmail.com> >> >> Good morning to all, >> How can I create 3 depending QCombobox, for example Country, City and Zip >> Code, so that when I select one, the other ones are filtered by the value of >> the first one? I'm use a QSqlRelationalTableModel and 3 relations (so also 3 >> QSqlTableModel). I know that I can use QComboBox signal to filter data of >> QSqlTableModel, but if I use the QDataWidgetMapper the search on it don't >> fire any QCombobox Signal, so, how can I got what I want? >> >> >> Thanks a lot for your time! >> >> Michele > > > _______________________________________________ > Interest mailing list > Interest@qt-project.org > http://lists.qt-project.org/mailman/listinfo/interest > _______________________________________________ Interest mailing list Interest@qt-project.org http://lists.qt-project.org/mailman/listinfo/interest