Another ::data that does unbounded checks, i'd say this is the problem.
QVariant Categories::data(const QModelIndex& index, int role) const { CategoryData* catData = m_categories.at(index.row()).data();
Another ::data that does unbounded checks, i'd say this is the problem.
QVariant :data(const QModelIndex& index, int role) const at(index. row()). data();
Categories:
{
CategoryData* catData = m_categories.