C ++中

时间:2016-08-11 02:40:28

标签: c++ qt qml

在QML中,我可以通过调用Qt.createQmlObject动态创建一个组件(而不是从文件中加载它)。例如:

Qt.createQmlObject('import QtQuick 1.0; Rectangle {color: "red"; width: 20; height: 20}', parent, "dynamicPath");

有没有办法从C ++代码做同样的事情?它不一定要涉及解析QML-I只是寻找一种方法,例如,动态创建并将RectangleTextField附加到C ++的QML文档中

1 个答案:

答案 0 :(得分:3)

您使用的是弃用的Qt Quick 1吗?鉴于你有:

QDeclarativeView *view = ...;
QDeclarativeItem *parent = ...;

你可以这样做:

QDeclarativeEngine *engine = view->engine();
QDeclarativeComponent component(engine);
component.setData("import QtQuick 1.0; Rectangle {color: \"red\"; width: 20; height: 20}", QUrl("dynamicPath"));
QDeclarativeItem *item = qobject_cast<QDeclarativeItem *>(component.create());
Q_ASSERT(item);
item->setParentItem(parent);

如果您实际使用的是Qt Quick 2,you'd replace QDeclarative*QQml*QQuick*