void SortFilterProxyModel::componentComplete() { m_complete = true; if (!m_sortRole.isEmpty()) QSortFilterProxyModel::setSortRole(roleKey(m_sortRole)); if (!m_filterRole.isEmpty()) QSortFilterProxyModel::setFilterRole(roleKey(m_filterRole)); }
void SortFilterProxyModel::setFilterRole(const QByteArray &role) { if (m_filterRole != role) { m_filterRole = role; if (m_complete) QSortFilterProxyModel::setFilterRole(roleKey(role)); } }
bool SortFilterProxyModel::filterAcceptsRow(int sourceRow, const QModelIndex &sourceParent) const { QRegExp rx = filterRegExp(); if (rx.isEmpty()) return true; QAbstractItemModel *model = sourceModel(); if (filterRole().isEmpty()) { QHash<int, QByteArray> roles = roleNames(); QHashIterator<int, QByteArray> it(roles); while (it.hasNext()) { it.next(); QModelIndex sourceIndex = model->index(sourceRow, 0, sourceParent); QString key = model->data(sourceIndex, it.key()).toString(); if (key.contains(rx)) return true; } return false; } QModelIndex sourceIndex = model->index(sourceRow, 0, sourceParent); if (!sourceIndex.isValid()) return true; QString key = model->data(sourceIndex, roleKey(filterRole())).toString(); return key.contains(rx); }
void SortFilterProxyModel::setFilterRole(const QByteArray &role) { QSortFilterProxyModel::setFilterRole(roleKey(role)); }