У меня есть модель дерева с внутренней структурой, похожей на Пример простой модели дерева . Есть специальные элементы массива типа, для которых я хочу отобразить индекс. Мой метод данных выглядит так:
QVariant Model::data(const QModelIndex & index, int role ) const
{
if (!index.isValid())
return QVariant();
TreeNode *item = getItem(index);
if (role == Qt::DisplayRole) {
return item->text();
}
...
return QVariant();
}
const QString TreeNode::text() const
{
if (array) {
return name() + " [" + QString::number(childNumber()) + "]";
}
return mText;
}
У меня есть модульный тест, который выполняет удаление узла, который использует Model Test . Проблема возникает в последней строке этого теста
void ModelTest::rowsRemoved ( const QModelIndex & parent, int start, int end )
{
Changing c = remove.pop();
QVERIFY( c.parent == parent );
QVERIFY( c.oldSize - ( end - start + 1 ) == model->rowCount ( parent ) );
QVERIFY( c.last == model->data ( model->index ( start - 1, 0, c.parent ) ) );
QVERIFY( c.next == model->data ( model->index ( start, 0, c.parent ) ) );
}
, который сравнивает значение до удаления со значением после удаления. В моем случае, так как я также отображаю индексы, они не совпадают. Например, у меня были Item1
и Item2
в модели. Если Item1
удалено, то Item2
становится Item1
, и тест не пройден.
У меня вопрос, что-то не так в моей реализации модели? Должен ли я справиться с этой ситуацией по-другому?