void QXmlTreeView::currentNodeChanged(const QModelIndex& current, const QModelIndex& previous) { if (current.isValid() && current.internalPointer() != previous.internalPointer()) { QXmlTreeNode* node(static_cast<QXmlTreeNode*>(current.internalPointer())); emit currentNodeChanged(node); } else if (!current.isValid() && previous.isValid()) { emit currentNodeChanged(0);//qobject_cast<SceneTreeModel*>(model())->m_rootItem); clearSelection(); } }
void PipelineTreeView::currentNodeChanged(const QModelIndex& current, const QModelIndex& previous) { if (current.isValid() && current.row() != previous.row()) { QXmlTreeNode* node(static_cast<QXmlTreeNode*>(current.internalPointer())); emit currentNodeChanged(node); } else if (!current.isValid() && previous.isValid()) { emit currentNodeChanged(0); clearSelection(); } }
void QXmlTreeView::setModel(QAbstractItemModel *model) { QTreeView::setModel(model); connect(selectionModel(), SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)), this, SLOT(currentNodeChanged(const QModelIndex&, const QModelIndex&))); currentNodeChanged(currentIndex(), QModelIndex()); }