本文整理汇总了C++中ModelNode::property方法的典型用法代码示例。如果您正苦于以下问题:C++ ModelNode::property方法的具体用法?C++ ModelNode::property怎么用?C++ ModelNode::property使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ModelNode
的用法示例。
在下文中一共展示了ModelNode::property方法的6个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: applyProperties
static inline void applyProperties(ModelNode &node, const QHash<PropertyName, QVariant> &propertyHash)
{
QHash<PropertyName, QVariant> auxiliaryData = node.auxiliaryData();
foreach (const PropertyName &propertyName, auxiliaryData.keys()) {
if (node.hasAuxiliaryData(propertyName))
node.setAuxiliaryData(propertyName, QVariant());
}
QHashIterator<PropertyName, QVariant> propertyIterator(propertyHash);
while (propertyIterator.hasNext()) {
propertyIterator.next();
const PropertyName propertyName = propertyIterator.key();
if (propertyName == "width" || propertyName == "height") {
node.setAuxiliaryData(propertyIterator.key(), propertyIterator.value());
} else if (node.property(propertyIterator.key()).isDynamic() &&
node.property(propertyIterator.key()).dynamicTypeName() == "alias" &&
node.property(propertyIterator.key()).isBindingProperty()) {
AbstractProperty targetProperty = node.bindingProperty(propertyIterator.key()).resolveToProperty();
if (targetProperty.isValid())
targetProperty.parentModelNode().setAuxiliaryData(targetProperty.name() + "@NodeInstance", propertyIterator.value());
} else {
node.setAuxiliaryData(propertyIterator.key() + "@NodeInstance", propertyIterator.value());
}
}
}
示例2: resolveBinding
static ModelNode resolveBinding(const QString &binding, ModelNode currentNode, AbstractView* view)
{
int i = 0;
QString element = binding.split(QLatin1Char('.')).at(0);
while (!element.isEmpty())
{
if (element == "parent") {
if (currentNode.hasParentProperty())
currentNode = currentNode.parentProperty().toNodeAbstractProperty().parentModelNode();
else
return ModelNode(); //binding not valid
} else if (currentNode.hasProperty(element)) {
if (currentNode.property(element).isNodeProperty()) {
currentNode = currentNode.nodeProperty(element).modelNode();
} else {
currentNode = view->modelNodeForId(element); //id
if (!currentNode.isValid())
return ModelNode(); //binding not valid
}
} else {
currentNode = view->modelNodeForId(element); //id
}
i++;
if (i < binding.split(QLatin1Char('.')).count())
element = binding.split(QLatin1Char('.')).at(i);
else
element.clear();
}
return currentNode;
}
示例3: propertiesToQml
QString QmlTextGenerator::propertiesToQml(const ModelNode &node, int indentDepth) const
{
QString topPart;
QString bottomPart;
QStringList nodePropertyNames = node.propertyNames();
bool addToTop = true;
foreach (const QString &propertyName, m_propertyOrder) {
if (QLatin1String("id") == propertyName) {
// the model handles the id property special, so:
if (!node.id().isEmpty()) {
QString idLine(indentDepth, QLatin1Char(' '));
idLine += QLatin1String("id: ");
idLine += node.id();
idLine += QLatin1Char('\n');
if (addToTop)
topPart.append(idLine);
else
bottomPart.append(idLine);
}
} else if (propertyName.isEmpty()) {
addToTop = false;
} else if (nodePropertyNames.removeAll(propertyName)) {
const QString newContent = propertyToQml(node.property(propertyName), indentDepth);
if (addToTop)
topPart.append(newContent);
else
bottomPart.append(newContent);
}
}
foreach (const QString &propertyName, nodePropertyNames) {
bottomPart.prepend(propertyToQml(node.property(propertyName), indentDepth));
}
示例4: property
static QList<ModelNode> acceptedModelNodeChildren(const ModelNode &parentNode)
{
QList<ModelNode> children;
PropertyNameList properties;
if (parentNode.metaInfo().hasDefaultProperty())
properties.append(parentNode.metaInfo().defaultPropertyName());
#ifndef DISABLE_VISIBLE_PROPERTIES
properties.append(visibleProperties(parentNode));
#endif
foreach (const PropertyName &propertyName, properties) {
AbstractProperty property(parentNode.property(propertyName));
if (property.isNodeAbstractProperty())
children.append(property.toNodeAbstractProperty().directSubNodes());
}
示例5: setup
void BehaviorDialog::setup(const ModelNode &node, const QString propertyName)
{
m_modelNode = node;
m_ui->duration->setValue(100);
m_ui->velocity->setValue(2);
m_ui->spring->setValue(2);
m_ui->damping->setValue(2);
m_ui->stackedWidget->setCurrentIndex(0);
m_ui->curve->setCurrentIndex(0);
if (m_modelNode.isValid()) {
m_propertyName = propertyName;
m_ui->id->setText(m_modelNode.id());
m_ui->type->setText(m_modelNode.simplifiedTypeName());
m_ui->propertyName->setText(propertyName);
if (m_modelNode.hasProperty(m_propertyName) && m_modelNode.property(m_propertyName).isNodeProperty()) {
NodeProperty nodeProperty(m_modelNode.nodeProperty(m_propertyName));
if (nodeProperty.modelNode().type() == "Qt/SpringFollow") {
ModelNode springFollow = nodeProperty.modelNode();
m_ui->curve->setCurrentIndex(1);
m_ui->stackedWidget->setCurrentIndex(1);
if (springFollow.hasProperty("velocity") && springFollow.property("velocity").isVariantProperty())
m_ui->velocity->setValue(springFollow.variantProperty("velocity").value().toDouble());
if (springFollow.hasProperty("spring") && springFollow.property("spring").isVariantProperty())
m_ui->spring->setValue(springFollow.variantProperty("spring").value().toDouble());
if (springFollow.hasProperty("damping") && springFollow.property("damping").isVariantProperty())
m_ui->damping->setValue(springFollow.variantProperty("damping").value().toDouble());
if (springFollow.hasProperty("source") && springFollow.property("source").isVariantProperty())
m_ui->source->setText(springFollow.variantProperty("source").value().toString());
} else if (nodeProperty.modelNode().type() == "Qt/Behavior") {
if (nodeProperty.modelNode().hasProperty("animation") &&
nodeProperty.modelNode().property("animation").isNodeProperty() &&
nodeProperty.modelNode().nodeProperty("animation").modelNode().type() == "Qt/NumberAnimation") {
m_ui->curve->setCurrentIndex(0);
ModelNode animation = nodeProperty.modelNode().nodeProperty("animation").modelNode();
if (animation.hasProperty("duration") && animation.property("duration").isVariantProperty())
m_ui->duration->setValue(animation.variantProperty("duration").value().toInt());
if (animation.hasProperty("easing") && animation.property("easing").isVariantProperty()) {
QStringList easingItems;
for (int i = 0; i < m_ui->curve->count(); i++)
easingItems.append(m_ui->curve->itemText(i));
m_ui->curve->setCurrentIndex(easingItems.indexOf(animation.variantProperty("easing").value().toString()));
}
}
}
}
}
}
示例6: resolveToProperty
AbstractProperty BindingProperty::resolveToProperty() const
{
if (!isValid())
throw InvalidModelNodeException(__LINE__, __FUNCTION__, __FILE__);
QString binding = expression();
ModelNode node = parentModelNode();
QString element;
if (binding.contains(QLatin1Char('.'))) {
element = binding.split(QLatin1Char('.')).last();
QString nodeBinding = binding;
nodeBinding.chop(element.length());
node = resolveBinding(nodeBinding, parentModelNode(), view());
} else {
element = binding;
}
if (node.isValid())
return node.property(element);
else
return AbstractProperty();
}