У меня есть пользовательский подкласс qsortfilterproxymodel . Я переводил FilterAcceptsRow с помощью пользовательского фильтра, который я хотел. Затем я использовал его как таковой: < /p>
proxy = new MyFilterModel();
proxy->setSourceModel(...);
proxy->setDynamicSortFilter(true);
proxy->setFilterParams(...); // my custom function
comboBox->setModel(proxy);
< /code>
Однако, когда базовая модель исходной модели обновляется так, что строки, которые ранее были отфильтрованы, больше не должны фильтровать, комбо -поле не обновлялись этими рядами. Почему это?void MyFilterModel::setSourceModel(QAbstractItemModel *sourceModel)
{
QSortFilterProxyModel::setSourceModel(sourceModel);
connect(sourceModel, SIGNAL(dataChanged(const QModelIndex&, const QModelIndex&)), this, SLOT(doInvalidateFilter()));
connect(sourceModel, SIGNAL(modelReset()), this, SLOT(doInvalidateFilter()));
invalidateFilter();
}
... где все doinvalidatefilter () Do Dois Is Call Invalidatefilter . Это сработало - теперь, когда модель обновила, сами фильтровая строки также обновлялись. Это ошибка в QT?
У меня есть пользовательский подкласс qsortfilterproxymodel . Я переводил FilterAcceptsRow с помощью пользовательского фильтра, который я хотел. Затем я использовал его как таковой: < /p>
[code]proxy = new MyFilterModel(); proxy->setSourceModel(...); proxy->setDynamicSortFilter(true); proxy->setFilterParams(...); // my custom function comboBox->setModel(proxy); < /code>
Однако, когда базовая модель исходной модели обновляется так, что строки, которые ранее были отфильтрованы, больше не должны фильтровать, комбо -поле не обновлялись этими рядами. Почему это?void MyFilterModel::setSourceModel(QAbstractItemModel *sourceModel) { QSortFilterProxyModel::setSourceModel(sourceModel);
... где все doinvalidatefilter () Do Dois Is Call Invalidatefilter . Это сработало - теперь, когда модель обновила, сами фильтровая строки также обновлялись. Это ошибка в QT?