本文整理汇总了C++中ModelNode::id方法的典型用法代码示例。如果您正苦于以下问题:C++ ModelNode::id方法的具体用法?C++ ModelNode::id怎么用?C++ ModelNode::id使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类ModelNode
的用法示例。
在下文中一共展示了ModelNode::id方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: searchForComponentAndAddToList
void ComponentView::searchForComponentAndAddToList(const ModelNode &node)
{
QList<ModelNode> nodeList;
nodeList.append(node);
nodeList.append(node.allSubModelNodes());
foreach (const ModelNode &node, nodeList) {
if (node.nodeSourceType() == ModelNode::ComponentSource) {
if (!node.id().isEmpty()) {
QStandardItem *item = new QStandardItem(node.id());
item->setData(QVariant::fromValue(node), ModelNodeRole);
item->setEditable(false);
removeSingleNodeFromList(node); //remove node if already present
m_standardItemModel->appendRow(item);
} else {
QString description;
ModelNode parentNode = node.parentProperty().parentModelNode();
if (parentNode.isValid())
if (!parentNode.id().isEmpty())
description = node.parentProperty().parentModelNode().id() + QLatin1Char(' ');
else
description = node.parentProperty().parentModelNode().simplifiedTypeName() + QLatin1Char(' ');
description += node.parentProperty().name();
QStandardItem *item = new QStandardItem(description);
item->setData(QVariant::fromValue(node), ModelNodeRole);
item->setEditable(false);
removeSingleNodeFromList(node); //remove node if already present
m_standardItemModel->appendRow(item);
}
}
}
}
示例2: createSubNode
void TestPropertyEditor::createSubNode()
{
std::auto_ptr<QWidget> widget(new QWidget());
QScopedPointer<Model> model(Model::create("import Qt 4.6\n Item {}"));
QVERIFY(model.data());
QScopedPointer<TestView> view(new TestView);
QVERIFY(view.data());
model->attachView(view.data());
setupPropertyEditor(widget.get(), model.data());
QVERIFY(view->rootModelNode().isValid());
selectThrough(view->rootModelNode());
ModelNode childNode = view->createModelNode("Qt/Rectangle", 4, 6);
view->rootModelNode().nodeListProperty("data").reparentHere(childNode);
QVERIFY(childNode.isValid());
QVERIFY(view->rootModelNode().allDirectSubModelNodes().contains(childNode));
QVERIFY(childNode.parentProperty().parentModelNode() == view->rootModelNode());
QCOMPARE(childNode.type(), QString("Qt/Rectangle"));
selectThrough(childNode);
QVERIFY(childNode.id().isEmpty());
childNode.setId("Blah");
QCOMPARE(childNode.id(), QString("Blah"));
QCOMPARE(childNode.id(), QString("Blah"));
}
示例3: qWarning
QWidget *ConnectionDelegate::createEditor(QWidget *parent, const QStyleOptionViewItem &option, const QModelIndex &index) const
{
QWidget *widget = QStyledItemDelegate::createEditor(parent, option, index);
const ConnectionModel *connectionModel = qobject_cast<const ConnectionModel*>(index.model());
ConnectionComboBox *connectionComboBox = qobject_cast<ConnectionComboBox*>(widget);
if (!connectionModel) {
qWarning() << "ConnectionDelegate::createEditor no model";
return widget;
}
if (!connectionModel->connectionView()) {
qWarning() << "ConnectionDelegate::createEditor no connection view";
return widget;
}
if (!connectionComboBox) {
qWarning() << "ConnectionDelegate::createEditor no bindingComboBox";
return widget;
}
switch (index.column()) {
case ConnectionModel::TargetModelNodeRow: {
foreach (const ModelNode &modelNode, connectionModel->connectionView()->allModelNodes()) {
if (!modelNode.id().isEmpty()) {
connectionComboBox->addItem(modelNode.id());
}
}
} break;
case ConnectionModel::TargetPropertyNameRow: {
connectionComboBox->addItems(prependOnForSignalHandler(connectionModel->getSignalsForRow(index.row())));
} break;
case ConnectionModel::SourceRow: {
ModelNode rootModelNode = connectionModel->connectionView()->rootModelNode();
if (QmlItemNode::isValidQmlItemNode(rootModelNode) && !rootModelNode.id().isEmpty()) {
QString itemText = tr("Change to default state");
QString source = QString::fromLatin1("{ %1.state = \"\" }").arg(rootModelNode.id());
connectionComboBox->addItem(itemText, source);
connectionComboBox->disableValidator();
foreach (const QmlModelState &state, QmlItemNode(rootModelNode).states().allStates()) {
QString itemText = tr("Change state to %1").arg(state.name());
QString source = QString::fromLatin1("{ %1.state = \"%2\" }").arg(rootModelNode.id()).arg(state.name());
connectionComboBox->addItem(itemText, source);
}
}
connectionComboBox->disableValidator();
} break;
default: qWarning() << "ConnectionDelegate::createEditor column" << index.column();
}
示例4: createRect
void TestPropertyEditor::createRect()
{
try {
std::auto_ptr<QWidget> widget(new QWidget());
QScopedPointer<Model> model(Model::create("import Qt 4.6\n Item {}"));
QVERIFY(model.data());
QScopedPointer<TestView> view(new TestView);
QVERIFY(view.data());
model->attachView(view.data());
setupPropertyEditor(widget.get(), model.data());
QVERIFY(view->rootModelNode().isValid());
//selectThrough(view->rootModelNode());
ModelNode childNode = view->createModelNode("Qt/Rectangle", 4, 6);
view->rootModelNode().nodeListProperty("data").reparentHere(childNode);
QVERIFY(childNode.isValid());
QVERIFY(view->rootModelNode().allDirectSubModelNodes().contains(childNode));
QVERIFY(childNode.parentProperty().parentModelNode() == view->rootModelNode());
QCOMPARE(childNode.type(), QString("Qt/Rectangle"));
QVERIFY(childNode.id().isEmpty());
childNode.setId("Rect01");
QCOMPARE(childNode.id(), QString("Rect01"));
childNode.variantProperty("x") = 100;
QCOMPARE(QmlObjectNode(childNode).instanceValue("x").toInt(), 100);
childNode.variantProperty("y") = 100;
QCOMPARE(QmlObjectNode(childNode).instanceValue("y").toInt(), 100);
childNode.variantProperty("width") = 100;
QCOMPARE(QmlObjectNode(childNode).instanceValue("width").toInt(), 100);
childNode.variantProperty("height") = 100;
QCOMPARE(QmlObjectNode(childNode).instanceValue("height").toInt(), 100);
selectThrough(childNode);
QCOMPARE(childNode.propertyNames().count(), 4);
QCOMPARE(childNode.variantProperty("scale").value(), QVariant());
} catch (Exception &) {
QFAIL("Exception thrown");
}
}
示例5: componentIdForModelNode
static inline QString componentIdForModelNode(const ModelNode &modelNode)
{
if (modelNode.id().isEmpty()) {
if (modelNode.hasParentProperty()
&& modelNode.parentProperty().name() != "data"
&& modelNode.parentProperty().name() != "children") {
return modelNode.parentProperty().name();
} else {
return modelNode.simplifiedTypeName();
}
} else {
return modelNode.id();
}
}
示例6: getDisplayString
static QString getDisplayString(const QModelIndex &modelIndex, NavigatorTreeModel *navigatorTreeModel)
{
ModelNode modelNode = navigatorTreeModel->nodeForIndex(modelIndex);
if (modelNode.hasId())
return modelNode.id();
return modelNode.simplifiedTypeName();
}
示例7: setEditorData
void NameItemDelegate::setEditorData(QWidget *editor, const QModelIndex &index) const
{
ModelNode node = m_navigatorTreeModel->nodeForIndex(index);
QString value = node.id();
QLineEdit *lineEdit = static_cast<QLineEdit*>(editor);
lineEdit->setText(value);
}
示例8: changeToSubComponentAndPushOnCrumblePath
void DesignDocument::changeToSubComponentAndPushOnCrumblePath(const ModelNode &componentNode)
{
if (QmlDesignerPlugin::instance()->currentDesignDocument() != this)
return;
changeToSubComponent(componentNode);
QmlDesignerPlugin::instance()->viewManager().pushInFileComponentOnCrambleBar(componentNode.id());
}
示例9: updateItemRow
void NavigatorTreeModel::updateItemRow(const ModelNode &node, ItemRow items)
{
bool blockSignal = blockItemChangedSignal(true);
items.idItem->setText(node.id());
items.visibilityItem->setCheckState(node.auxiliaryData("invisible").toBool() ? Qt::Unchecked : Qt::Checked);
blockItemChangedSignal(blockSignal);
}
示例10: paint
void NameItemDelegate::paint(QPainter *painter,
const QStyleOptionViewItem &option, const QModelIndex &index) const
{
if (option.state & QStyle::State_Selected)
drawSelectionBackground(painter, option);
QString displayString;
QPoint displayStringOffset;
painter->save();
QFontMetrics fm(option.font);
int width = 0;
if (index.data(Qt::UserRole).isValid()) {
int pixmapSide = 16;
if (m_TreeModel->isNodeInvisible( index ))
painter->setOpacity(0.5);
ModelNode node = m_TreeModel->nodeForIndex(index);
QIcon icon;
if (node.isValid()) {
// if node has no own icon, search for it in the itemlibrary
const ItemLibraryInfo *libraryInfo = node.model()->metaInfo().itemLibraryInfo();
QList <ItemLibraryEntry> infoList = libraryInfo->entriesForType(node.type(),
node.majorVersion(),
node.minorVersion());
foreach (const ItemLibraryEntry &entry, infoList) {
if (icon.isNull()) {
icon = entry.icon();
break;
}
}
}
// if the library was also empty, use the default icon
if (icon.isNull())
icon = QIcon(QLatin1String(":/ItemLibrary/images/item-default-icon.png"));
if (!node.metaInfo().isValid())
icon = QIcon(QLatin1String(":/ItemLibrary/images/item-invalid-icon.png"));
// If no icon is present, leave an empty space of 24 pixels anyway
QPixmap pixmap = icon.pixmap(pixmapSide, pixmapSide);
painter->drawPixmap(option.rect.x()+1,option.rect.y()+2,pixmap);
displayString = node.id();
if (displayString.isEmpty())
displayString = node.simplifiedTypeName();
// Check text length does not exceed available space
int extraSpace=12+pixmapSide;
displayString = fm.elidedText(displayString,Qt::ElideMiddle,option.rect.width()-extraSpace);
displayStringOffset = QPoint(5+pixmapSide,-5);
width = fm.width(displayString);
}
示例11: descriptionForNode
QString ComponentView::descriptionForNode(const ModelNode &node) const
{
QString description;
if (!node.id().isEmpty()) {
description = node.id();
} else if (node.hasParentProperty()) {
ModelNode parentNode = node.parentProperty().parentModelNode();
if (parentNode.id().isEmpty())
description = parentNode.simplifiedTypeName() + QLatin1Char(' ');
else
description = parentNode.id() + QLatin1Char(' ');
description += node.parentProperty().name();
}
return description;
}
示例12: 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));
}
示例13: inspectPropertyEditor
static void inspectPropertyEditor(ModelNode node, QWidget* propWidget)
{
if (!propWidget)
return;
QStackedWidget * stackedWidget = qobject_cast<QStackedWidget *> (propWidget);
QVERIFY(stackedWidget);
QDeclarativeView *view = qobject_cast<QDeclarativeView*>(stackedWidget->currentWidget());
QVERIFY(view);
QLineEdit * idLineEdit = view->findChild<QLineEdit* >("IdLineEdit");
if (!idLineEdit)
return ;
QCOMPARE(idLineEdit->text(), node.id());
if (node.hasProperty("width")) {
QSpinBox * widthSpinBox = view->findChild<QSpinBox* >("WidthSpinBox");
QVERIFY(widthSpinBox);
QCOMPARE(widthSpinBox->value(), node.variantProperty("width").value().toInt());
}
if (node.hasProperty("height")) {
QSpinBox * heightSpinBox = view->findChild<QSpinBox* >("HeightSpinBox");
QVERIFY(heightSpinBox);
QCOMPARE(heightSpinBox->value(), node.variantProperty("height").value().toInt());// this can be dangerous
}
if (node.hasProperty("x")) {
QSpinBox * xSpinBox = view->findChild<QSpinBox* >("XSpinBox");
QVERIFY(xSpinBox);
QCOMPARE(xSpinBox->value(), node.variantProperty("x").value().toInt()); // this can be dangerous
}
if (node.hasProperty("y")) {
QSpinBox * ySpinBox = view->findChild<QSpinBox* >("YSpinBox");
QVERIFY(ySpinBox);
QCOMPARE(ySpinBox->value(), node.variantProperty("y").value().toInt());
}
}
示例14: toogleExportAlias
void PropertyEditorContextObject::toogleExportAlias()
{
if (!m_model || !m_model->rewriterView())
return;
/* Ideally we should not missuse the rewriterView
* If we add more code here we have to forward the property editor view */
RewriterView *rewriterView = m_model->rewriterView();
if (rewriterView->selectedModelNodes().isEmpty())
return;
const ModelNode selectedNode = rewriterView->selectedModelNodes().constFirst();
if (QmlObjectNode::isValidQmlObjectNode(selectedNode)) {
QmlObjectNode objectNode(selectedNode);
PropertyName modelNodeId = selectedNode.id().toUtf8();
ModelNode rootModelNode = rewriterView->rootModelNode();
try {
RewriterTransaction transaction =
rewriterView->beginRewriterTransaction(QByteArrayLiteral("PropertyEditorContextObject:toogleExportAlias"));
if (!objectNode.isAliasExported())
objectNode.ensureAliasExport();
else
if (rootModelNode.hasProperty(modelNodeId))
rootModelNode.removeProperty(modelNodeId);
transaction.commit();
} catch (RewritingException &exception) { //better safe than sorry! There always might be cases where we fail
exception.showException();
}
}
}
示例15: selectThrough
static void selectThrough(ModelNode node, QWidget* propWidget = 0)
{
QVERIFY(node.isValid());
int numberOfProperties = node.propertyNames().count();
QList<AbstractProperty> properties = node.properties();
node.view()->clearSelectedModelNodes();
node.view()->selectModelNode(node);
QString name = node.id();
qApp->processEvents();
QTest::qSleep(100);
qApp->processEvents();
QTest::qSleep(100);
qApp->processEvents();
inspectPropertyEditor(node, propWidget);
//selecting should not effect any properties at all!
QCOMPARE(node.propertyNames().count(), numberOfProperties);
foreach (const AbstractProperty &property, properties)
if (property.isVariantProperty()) {
QCOMPARE(property.toVariantProperty().value(), node.variantProperty(property.name()).value());
}
QList<ModelNode> childNodes = node.allDirectSubModelNodes();
foreach (const ModelNode &childNode, childNodes)
selectThrough(childNode, propWidget);
}