ModelTest でモデル (QAbstractItemModel) をデバッグしようとしています。そして、私は1つの主張を理解できません。
ModelTest には、モデルによって生成された信号をインターセプトするスロットが 2 つあります。
- ModelTest::rowsAboutToBeInserted
- ModelTest::rowsInserted
スロット/機能1はこんな感じ
void ModelTest::rowsAboutToBeInserted ( const QModelIndex &parent, int start, int end )
{
Changing c;
// ...
c.last = model->data ( model->index ( start - 1, 0, parent ) );
c.next = model->data ( model->index ( start, 0, parent ) );
insert.push ( c );
}
スロット2はこんな感じ
void ModelTest::rowsInserted ( const QModelIndex & parent, int start, int end )
{
Changing c = insert.pop();
// other asserts ...
(*) Q_ASSERT ( c.next == model->data ( model->index ( end + 1, 0, c.parent ) ) );
}
dla 最後のアサーション (*) がわかりません。私のアプリで 1 行追加するとします。この行は、モデルに格納されている唯一の行です。したがって、行番号は 0 になります。
私が呼び出す行を追加する前の私のモデルで
beginInsertRows(parentIndex, 0, 0);
では、なぜ modeltest が必要なのか
モデル -> データ ( モデル -> インデックス (開始、0、親) )
に等しくなる
モデル-> データ ( モデル-> インデックス ( end + 1, 0, c.parent ) )
ここで何が欠けていますか? 助けてください :)