Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save agirault/11c75628b979c02e8c77e82d6eabe2f1 to your computer and use it in GitHub Desktop.
Save agirault/11c75628b979c02e8c77e82d6eabe2f1 to your computer and use it in GitHub Desktop.
//--------------------------------------------------------------------------
void qMRMLSubjectHierarchyTreeView::updateItemsSelectableFlag()
{
Q_D(qMRMLSubjectHierarchyTreeView);
if (!d->SubjectHierarchyNode)
{
return;
}
qMRMLSubjectHierarchyModel* sceneModel = qobject_cast<qMRMLSubjectHierarchyModel*>(this->model());
// Collect selected subject hierarchy items
std::vector<vtkIdType> childItemIDs;
vtkIdType sceneId = d->SubjectHierarchyNode->GetSceneItemID();
d->SubjectHierarchyNode->GetItemChildren(sceneId, childItemIDs, true);
foreach(vtkIdType itemID, childItemIDs)
{
bool isSelectable = this->sortFilterProxyModel()->filterAcceptsItem(itemID, false);
QStandardItem* item = sceneModel->itemFromSubjectHierarchyItem(itemID); // or proxy model?
if (isSelectable)
{
item->setFlags(item->flags() & Qt::ItemIsSelectable);
}
else
{
item->setFlags(item->flags() & ~Qt::ItemIsSelectable);
}
qDebug() << itemID << ": " << isSelectable;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment