QTreeView に QAbstractItemModel を実装しようとしています。行の挿入に問題があります。アプリケーションの最初に挿入すると、すべて正常に動作することに気付きました。しかし、後で行を挿入すると、他の操作 (選択など) の後、新しい項目は非表示のままになります。さらに、QTreeView はまったく機能しないようです。行の挿入について QTreeView に通知するためにいくつかの信号を送信する必要がありますか?
これは私の挿入方法です:
bool LayersModel::insertRows(int position, int count, const QModelIndex & parent)
{
LayersModelItem * parentItem = getItem(parent);
if (position > parentItem->childCount())
return false;
beginInsertRows(parent,position,position+count-1);
bool result = true;
for (;count;--count)
result &= parentItem->insertChildren(position, new LayersModelItem());
endInsertRows();
return result;
}
LayersModelItem は、子とデータを持つ QList を持つクラスです。
私のプロジェクトの完全なコード (KDE ライブラリが必要) はこちらです: https://github.com/coder89/PhotoFramesEditor/tree/v0.0.8 問題を確認するには、メイン ウィンドウの青い項目の 1 つを選択し、それを右クリックして、 「アイテムを削除」を選択します。(このメソッドは Canvas::removeItems() にあります) 完全にコメントされています - 私は絶望的で、この問題の理由を見つけようとしました... (実際には何も削除されませんでした - 新しいアイテムを追加します)。
ヘルプとアドバイスをありがとう!