internalpointer()
私は彼のdata()
実装に使用するモデル (myModel) を作成しました。QSortFilterProxyModel
を使用して (myModel に基づいて) ツリーをフィルター処理したい
ツリーからデータを取得しようとすると、アプリがクラッシュします。
ツリー データを呼び出しているときに、myModel indexModel を取得することを期待して、indexModel を取得したためだと思いますmyQSortFilterProxyModel
。
myItem *myModel::getItem(const QModelIndex &index) const
{
if (index.isValid()) {
myItem *item = static_cast<myItem*>(index.internalPointer());
if (item) return item;
}
return rootItem;
}
data()
使用している myModelinternalPointer()
QVariant myModel::data(const QModelIndex &index, int role) const
{
if (!index.isValid())
return QVariant();
if (role != Qt::DisplayRole && role != Qt::EditRole)
return QVariant();
myItem *item = getItem(index);
return item->data(index.column());
}
myModel とツリーの間でフィルター モデルを設定する
void myTree::myInit()
{
...
myModel *model = new myModel();
proxyModel = new mySortFilterProxyModel(this);
proxyModel->setSourceModel(model);
this->setModel(proxyModel);
...
myTree は QTreeView サブクラスです。tree->model()
myModel モデルを取得するために使用したい
ソース モデル データを取得するにはどうすればよいですか?