Да я уже спрашивал про модель, но я спрашивал немного про другое, не замечаете? Ту проблему я решил. И даже написал, в чём именно была ошибка.
код удаления строки: 
bool MyModel::removeRows(int row, int count, const QModelIndex &parent)
{// row=1, always
    beginInsertRows(parent, row, row + count - 1);
    vec->delRow(row);
    endInsertRows();
    return true;
}
vec - это объект класса Vector2dRoles. 
vector2droles.h:
#ifndef VECTOR2DROLES_H
#define VECTOR2DROLES_H
#include <QVector>
#include <QColor>
class Vector2dRoles
{
public:
    Vector2dRoles();
    Vector2dRoles(int _sizeX, int _sizeY);
    void appendRow(QColor _clr, QString _str);
    void delRow(int numRow);
    QVector< QVector< QString > > str;
    QVector< QVector< QColor > > clr;
private:
    int sizeY;
    QString dftStr;
    QColor dftClr;
};
#endif // VECTOR2DROLES_H
vector2droles.cpp:
#include "vector2droles.h"
#include <QDebug>
Vector2dRoles::Vector2dRoles(int _sizeX, int _sizeY)
{
    dftStr = "";
    dftClr = QColor(Qt::gray);
    sizeY = _sizeY;
    str = QVector< QVector< QString > >(_sizeX, QVector< QString >(_sizeY, dftStr));
    clr = QVector< QVector< QColor > >(_sizeX, QVector< QColor >(_sizeY, dftClr));
}
void Vector2dRoles::appendRow(QColor _clr, QString _str)
{
    QVector<QString> strVec = QVector<QString>(sizeY, _str);
    QVector<QColor> clrVec = QVector<QColor>(sizeY, _clr);
    str.append(strVec);
    clr.append(clrVec);
}
void Vector2dRoles::delRow(int numRow)
{
    str.remove(numRow);
    clr.remove(numRow);
}