Qt 在C+中创建QML元素+;?

Qt 在C+中创建QML元素+;?,qt,qml,qt5,qtquick2,Qt,Qml,Qt5,Qtquick2,我有以下问题: 我使用.qml文件将初始接口加载到QQuickView中。 然后我想使用C++将“图像> 或文本添加到界面。p> 我知道我可以操纵C++中的现有元素,但是我如何创建新的类型并添加它们?< p>不幸的是文档有点过时了(使用Qt4 API),但是如果你读了段从C++中加载QML组件< /强>这里: 然后您应该有如下内容(使用QT5API): 这将为您提供一个.qml文件中的QObject,但缺少的是如何将其添加到视图中。在qml中,除非项目是视图的父项,否则不会绘制项目。一种方法是将

我有以下问题:

我使用
.qml
文件将初始接口加载到
QQuickView
中。 然后我想使用C++将“<代码>图像> <代码>或<代码>文本<代码>添加到界面。p>
<>我知道我可以操纵C++中的现有元素,但是我如何创建新的类型并添加它们?

< p>不幸的是文档有点过时了(使用Qt4 API),但是如果你读了段<强>从C++中加载QML组件< /强>这里:

然后您应该有如下内容(使用QT5API):

这将为您提供一个.qml文件中的QObject,但缺少的是如何将其添加到视图中。在qml中,除非项目是视图的父项,否则不会绘制项目。一种方法是将该项添加到根上下文,如下所示:

QQmlProperty::write(object, "parent"
                    , QVariant::fromValue<QObject*>(view.rootObject()));
最后,您需要记住删除对象“object”。由于它是一个QoObject,您应该使用:

object->deleteLater();
希望这对别人有帮助

转到此处:,滚动至底部,查看标题“使用QtQuick模块定义可视项目”

这让你知道应该怎么做

此链接提供了如何执行的示例(虽然它是为Qt4.7编写的,但与Qt5没有太大区别):


注意:不要忘记使用(继承)QQuickItem类而不是QDeclarativeItem。

不要忘记导入
QQmlEngine::setObjectOwnership(object, QQmlEngine::CppOwnership);
object->deleteLater();