Название: перерисовать таблицу во время работы программы с помощью proxyModel Отправлено: Жора от Август 27, 2012, 13:23 Добрый день.
Есть своя модель унаследованная от QAbstractTableModel. Есть своя прокси модель унаследованная от QSortFilterProxyModel. Перегрузил функцию filterAcceptsRow, для фильтрации по строкам. При первом запуске фильтруется все хорошо, значения, по которым надо фильтровать беру из comboBox. При выборе другого значения из combobox обрабатываю событие: Код: void MainWindow::onCurrentIndexChanged(QString text) Что нужно выполнить по этому событию, что б перерисовалась таблица, с другим значением для поиска? Название: Re: перерисовать таблицу во время работы программы с помощью proxyModel Отправлено: mutineer от Август 27, 2012, 13:52 void QSortFilterProxyModel::invalidate () [slot]
Название: Re: перерисовать таблицу во время работы программы с помощью proxyModel Отправлено: Жора от Август 27, 2012, 14:04 Спасибо! Все работает.
Может еще ответите на 1 вопрос. Почему пока не переопределил сигнал dataChanged. программа складывалать при вызове emit dataChanged(QModelIndex,QModelIndex) Код: void ProxyModel::setSourceModel(QAbstractItemModel *sourceModel) или хотя бы где нужно покапать. Спасибо. Название: Re: перерисовать таблицу во время работы программы с помощью proxyModel Отправлено: mutineer от Август 27, 2012, 14:40 В каком смысле "перепределил сигнал"?
Что значит "программа складывалась"? Название: Re: перерисовать таблицу во время работы программы с помощью proxyModel Отправлено: Жора от Август 27, 2012, 16:10 Цитировать В каком смысле "перепределил сигнал"? Код: void ProxyModel::setSourceModel(QAbstractItemModel *sourceModel) Цитировать Что значит "программа складывалась"? Выскакивает ошибка, как на вложенной картинке.Название: Re: перерисовать таблицу во время работы программы с помощью proxyModel Отправлено: mutineer от Август 27, 2012, 16:16 Вообще твой код не особо корректен, потому что индексы внутренней модели после фильтрации и сортировки не совпадают с индексами модели-фильтра, и выкидывать их наружу неверно.
Почему оно падало при выполнении кода, который я не вижу, я сказать не могу |