本文整理汇总了C++中NodeAbstractProperty类的典型用法代码示例。如果您正苦于以下问题:C++ NodeAbstractProperty类的具体用法?C++ NodeAbstractProperty怎么用?C++ NodeAbstractProperty使用的例子?那么, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了NodeAbstractProperty类的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: updateChildren
void NodeInstanceView::updateChildren(const NodeAbstractProperty &newPropertyParent)
{
QVector<ModelNode> childNodeVector = newPropertyParent.directSubNodes().toVector();
qint32 parentInstanceId = newPropertyParent.parentModelNode().internalId();
foreach (const ModelNode &childNode, childNodeVector) {
qint32 instanceId = childNode.internalId();
if (hasInstanceForId(instanceId)) {
NodeInstance instance = instanceForId(instanceId);
if (instance.directUpdates())
instance.setParentId(parentInstanceId);
}
}
示例2: isInEditedPath
static bool isInEditedPath(const NodeAbstractProperty &propertyParent, const ModelNode &editingPathViewModelNode)
{
if (editingPathViewModelNode.isValid()) {
if (editingPathViewModelNode.hasNodeProperty("path")) {
ModelNode pathModelNode = editingPathViewModelNode.nodeProperty("path").modelNode();
if (pathModelNode.metaInfo().isSubclassOf("QtQuick.Path")) {
if (propertyParent.name() == "pathElements" && propertyParent.parentModelNode() == pathModelNode)
return true;
}
}
}
return false;
}
示例3: nodeReparented
void ModelToTextMerger::nodeReparented(const ModelNode &node, const NodeAbstractProperty &newPropertyParent, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags propertyChange)
{
if (isInHierarchy(oldPropertyParent) && isInHierarchy(newPropertyParent)) { // the node is moved
schedule(new ReparentNodeRewriteAction(node,
oldPropertyParent,
newPropertyParent,
propertyType(newPropertyParent)));
} else if (isInHierarchy(oldPropertyParent) && !isInHierarchy(newPropertyParent)) { // the node is removed from hierarchy
if (oldPropertyParent.isNodeProperty()) {
// ignore, the subsequent remove property will take care of all
} else if (oldPropertyParent.isNodeListProperty()) {
if (!oldPropertyParent.isDefaultProperty() && oldPropertyParent.toNodeListProperty().toModelNodeList().size() == 0) {
schedule(new RemovePropertyRewriteAction(oldPropertyParent));
} else {
schedule(new RemoveNodeRewriteAction(node));
}
} else {
schedule(new RemoveNodeRewriteAction(node));
}
} else if (!isInHierarchy(oldPropertyParent) && isInHierarchy(newPropertyParent)) { // the node is inserted into to hierarchy
switch (propertyChange) {
case AbstractView::PropertiesAdded:
schedule(new AddPropertyRewriteAction(newPropertyParent,
QmlTextGenerator(getPropertyOrder())(node),
propertyType(newPropertyParent),
node));
break;
case AbstractView::NoAdditionalChanges:
schedule(new ChangePropertyRewriteAction(newPropertyParent,
QmlTextGenerator(getPropertyOrder())(node),
propertyType(newPropertyParent),
node));
break;
case AbstractView::EmptyPropertiesRemoved:
break;
default:
Q_ASSERT(!"Unknown PropertyChange value");
}
} else {
// old is outside of hierarchy, new is outside of hierarchy, so who cares?
}
}
示例4: nodeReparented
void NavigatorView::nodeReparented(const ModelNode &node, const NodeAbstractProperty & newPropertyParent, const NodeAbstractProperty & /*oldPropertyParent*/, AbstractView::PropertyChangeFlags /*propertyChange*/)
{
bool blocked = blockSelectionChangedSignal(true);
m_treeModel->removeSubTree(node);
if (node.isInHierarchy())
m_treeModel->addSubTree(node);
// make sure selection is in sync again
updateItemSelection();
if (newPropertyParent.parentModelNode().isValid()) {
QModelIndex index = m_treeModel->indexForNode(newPropertyParent.parentModelNode());
treeWidget()->expand(index);
}
blockSelectionChangedSignal(blocked);
}
示例5: foreach
void FormEditorView::propertiesAboutToBeRemoved(const QList<AbstractProperty>& propertyList)
{
foreach(const AbstractProperty &property, propertyList) {
if (property.isNodeAbstractProperty()) {
NodeAbstractProperty nodeAbstractProperty = property.toNodeAbstractProperty();
QList<FormEditorItem*> removedItemList;
foreach(const ModelNode &modelNode, nodeAbstractProperty.allSubNodes()) {
QmlItemNode qmlItemNode(modelNode);
if (qmlItemNode.isValid() && m_scene->hasItemForQmlItemNode(qmlItemNode)) {
FormEditorItem *item = m_scene->itemForQmlItemNode(qmlItemNode);
removedItemList.append(item);
delete item;
}
}
m_currentTool->itemsAboutToRemoved(removedItemList);
}
}
示例6: rowCount
bool NavigatorTreeModel::dropMimeData(const QMimeData *data,
Qt::DropAction action,
int row,
int column,
const QModelIndex &dropIndex)
{
if (action == Qt::IgnoreAction)
return true;
if (action != Qt::LinkAction)
return false;
if (!data->hasFormat("application/vnd.modelnode.list"))
return false;
if (column > 1)
return false;
if (dropIndex.model() != this)
return false;
QModelIndex parentIndex, parentItemIndex;
PropertyName parentPropertyName;
int targetIndex;
parentIndex = dropIndex.sibling(dropIndex.row(), 0);
targetIndex = (row > -1)? row : rowCount(parentIndex);
if (this->data(parentIndex, NavigatorRole).isValid()) {
parentItemIndex = parentIndex;
ModelNode parentNode = nodeForIndex(parentItemIndex);
if (!parentNode.metaInfo().hasDefaultProperty())
return false;
targetIndex -= visibleProperties(parentNode).count();
parentPropertyName = parentNode.metaInfo().defaultPropertyName();
} else {
parentItemIndex = parentIndex.parent();
parentPropertyName = parentIndex.data(Qt::DisplayRole).toByteArray();
}
// Disallow dropping items between properties, which are listed first.
if (targetIndex < 0)
return false;
Q_ASSERT(parentItemIndex.isValid());
QByteArray encodedData = data->data("application/vnd.modelnode.list");
QDataStream stream(&encodedData, QIODevice::ReadOnly);
QList<ModelNode> nodeList;
while (!stream.atEnd()) {
uint nodeHash;
stream >> nodeHash;
if (containsNodeHash(nodeHash)) {
ModelNode node(nodeForHash(nodeHash));
nodeList.append(node);
}
}
ModelNode parentNode(nodeForIndex(parentItemIndex));
NodeAbstractProperty parentProperty = parentNode.nodeAbstractProperty(parentPropertyName);
if (parentProperty.isNodeProperty() &&
nodeList.count() > 1) {
return false;
}
moveNodesInteractive(parentProperty, nodeList, targetIndex);
propagateInvisible(parentNode, isNodeInvisible(parentNode));
return false; // don't let the view do drag&drop on its own
}
示例7: AbstractProperty
NodeAbstractProperty::NodeAbstractProperty(const NodeAbstractProperty &property, AbstractView *view)
: AbstractProperty(property.name(), property.internalNode(), property.model(), view)
{
}
示例8: QLatin1String
QDebug operator<<(QDebug debug, const NodeAbstractProperty &property)
{
return debug.nospace() << "NodeAbstractProperty(" << (property.isValid() ? property.name() : QLatin1String("invalid")) << ')';
}
示例9: nodeAboutToBeReparented
void StatesEditorView::nodeAboutToBeReparented(const ModelNode &node, const NodeAbstractProperty &/*newPropertyParent*/, const NodeAbstractProperty &oldPropertyParent, AbstractView::PropertyChangeFlags /*propertyChange*/)
{
if (oldPropertyParent.isValid() && oldPropertyParent.parentModelNode().isRootNode() && oldPropertyParent.name() == "states")
m_lastIndex = oldPropertyParent.indexOf(node);
}