6

以下は、行クラスを追加する方法です。これはテーブルではなくコードによって呼び出され、新しい行が追加されたときにdataChangedを適切に呼び出すようにします。これは機能していませんが、テーブルは何もしません。私は何が間違っているのですか?

void MyModel::add(const Person& p)
{
    people.push_back(p);

    QModelIndex top = createIndex(people.count() - 1, 0, 0);
    QModelIndex bottom = createIndex(people.count() - 1, 3, 0);

    emit dataChanged(top, bottom); // emit layoutChanged() if headers changed
}
4

1 に答える 1

8

dataChangedbeginInsertRows()既存のデータでのみ機能します。/を呼び出す必要がありますendInsertRows()

void MyModel::add(const Person& p)
{
    beginInsertRows(QModelIndex(), people.count(), people.count());
    people.push_back(p);
    endInsertRows();

    QModelIndex top = createIndex(people.count() - 1, 0, 0);
    QModelIndex bottom = createIndex(people.count() - 1, 3, 0);

    emit dataChanged(top, bottom); // emit layoutChanged() if headers changed
}

それはうまくいくはずです。たぶんあなたもする必要はありませんemit dataChanged

于 2011-05-14T11:08:30.113 に答える