来自C ++的Qt Quick元素 - 创建和销毁 - 是否可能?

时间:2013-05-03 18:14:53

标签: c++ qt qt-quick

我想同时使用Qt Quick和Qt Widgets来显示用户界面。问题是我想用C ++代码创建它们。 (在编译时没有定义UI。)后者没有问题。不幸的是,我找不到任何如何在运行时创建声明性场景的示例。看起来可以使用QML代码创建文本字符串并对其进行解释。不幸的是,我想要更健全的东西。有可能吗?

我玩QT5,但我也对QT4的答案感兴趣。

2 个答案:

答案 0 :(得分:1)

我相信这会给你答案:http://www.qtcentre.org/threads/48767-Can-a-QML-element-be-displayed-inside-a-QT-C-GUI


有可能。您的代码应如下所示:

// inside custom QGraphicsView class...

...

QGraphicsObject *qmlThing = getQMLGraphicsObjectFromURL(QUrl("pathToYourURL"));
myScene->addItem(qmlThing);

...

QGraphicsObject * MyGraphicsView::getQMLGraphicsObjectFromURL(const QUrl &url) {
QDeclarativeComponent component(new QDeclarativeEngine(), url);
QObject *object = component.create();
return qobject_cast<QGraphicsObject *>(object);
}

答案 1 :(得分:0)

似乎在运行时生成QML代码是可行的方法。根据UI的真实动态,您可以使用文本模板库,例如, C++ HTML template framework, templatizing library, HTML generator library获取这些列表。通过这种方式,您可以在文件中拥有UI的骨架,只需调用所选的模板库即可填写更改的部分,类似于动态网页的生成方式。

相关问题