// формируем список групп и товаровQVector<TableDataRow*> groups;QVector<TableDataRow*> elements;for (int i = 0; i < m_rows.count(); i++) if (m_rows[i]->primaryId() == 0) groups.append(m_rows[i]); else elements.append(m_rows[i]);// чистим строкиbeginRemoveRows(QModelIndex(), 0, m_rows.count());m_rows.clear();endRemoveRows();// формируем список строк таблицы с новой группировкойbeginInsertRows(QModelIndex(), 0, groups.count() + elements.count());for (int i = 0; i < groups.count(); i++){ m_rows.append(groups[i]); for (int j = 0; j < elements.count(); j++) { if (elements[j]->secondaryId() == groups[i]->secondaryId()) { m_rows.append(elements[j]); elements.remove(j); j--; } }}endInsertRows();// посылаем все возможные сигналы об обновлении данных//emit dataChanged(index(0, 0), index(columnCount(), rowCount()));reset();emit layoutChanged();
void CTovTbModel::reloadData() { //emit isLoadEndProgress(false); emit layoutAboutToBeChanged(); //QApplication::processEvents(); QList<CTovar*> tovs = m_sourceData->getAllTovs(); m_tovs.clear(); for(int i=0; i<tovs.size(); i++) { if(m_curGroups.at(0) > 0 && !m_curGroups.contains( tovs.at(i)->groupId )) continue; if(m_curBrand > 0 && m_curBrand != tovs.at(i)->brandId) continue; if((m_curFilters & filtStock) && tovs.at(i)->in_stock <= 0) continue; if((m_curFilters & filtAddDisc) && tovs.at(i)->discAdd <= 0) continue; if((m_curFilters & filtMaxDisc) && tovs.at(i)->discMax <= 0) continue; if((m_curFilters & filtTovNew) && !tovs.at(i)->isNew) continue; m_tovs << tovs.at(i); }//for if(!m_isLoaded) m_isLoaded = true; emit layoutChanged();}