Russian Qt Forum

Qt => Model-View (MV) => Тема начата: RVZ от Апрель 12, 2011, 12:31



Название: Фильтры для связки QSqlRelationalTableModel + QComboBox
Отправлено: RVZ от Апрель 12, 2011, 12:31
Всем доброго времени суток!
В общем картина следующая есть четыре таблицы (основная и три привязанных) например с координатами пользователя

   Координаты                                Область                         Город                              Улица
 ----------------------------         -------------         ---------------------         --------------------------------
| ID | oID | CityID | StreetID |       | oID | Name |       | CityID | oID | Name |        | StreetID | oID | CityID | Name |
-----------------------------         -------------         ---------------------         --------------------------------
Название Областей, городов, улиц разбросаны на форме по комбикам примерно так
Код
C++ (Qt)
......
RTM = new QSqlRelationalTableModel(0);
..........
ui->City->setModel(RTM->relationModel(CityIDx));
ui->City->setModelColumn(RTM->relationModel(CityIDx)->fieldIndex("City"));
........
mapper->setSubmitPolicy(QDataWidgetMapper::ManualSubmit);
 

все дело в том что улиц слишком много и есть одинаковые в разных городах хотелось бы както сократить список путем фильтрации(ограничения списка значений в комбиках) не знаю как это можно организовать
пробовал QSortFilterProxyModel_->setSourceModel(RTM->relationModel(CityIDx)); QSortFilterProxyModel_ назначать комбикам
все хорошо только только при попытке сохранить mapper->submit() комбики сбрасываются
Не знаю что делать помогите кто чем может  :'(


Название: Re: Фильтры для связки QSqlRelationalTableModel + QComboBox
Отправлено: Kunashir от Май 31, 2011, 12:47
Может стоит отказаться от комбиков и использовать формы подбора?


Название: Re: Фильтры для связки QSqlRelationalTableModel + QComboBox
Отправлено: pokidoff от Май 31, 2011, 12:56
В QSqlRelationalTableModel улиц ставь фильтр, в зависимости от выбранного города. То есть город изменился - в фильтр улиц подставляем айдишник города и перезаполняем модель. В этом случае при изменении города будут небольшие задержки (подвисания), пока модель улиц заполнится. Я в этот момент меняю курсор на часы.