gpt4 book ai didi

c++ - 不同上下文中的 QtQuick 动态对象

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:49:12 26 4
gpt4 key购买 nike

在我的 qml 中,我正在创建一个 C++ 组件对象,但无法弄清楚如何在对象创建后引用它。

这是创建 OgreScene 对象的 qml:

MouseArea
{
anchors.fill: parent

function scene()
{
var scene = Qt.createQmlObject( "import Client.Plugin.Ogre 0.1; OgreScene{ id: pluginScene; engine: OgreEngine }", plugin );
console.log( "qml: init scene" );
pluginScene.init();
}

onClicked: scene()
}

当我运行它时,我得到:

Qt Debug: qml: init scene
Qt Warning: qrc:///client.qml:118: ReferenceError: pluginScene is not defined

我将其添加到内联 qml 中:

import Client.Plugin.Ogre 0.1; 

它无法在没有导入的情况下找到对象定义。此导入已在 qml 文件中完成,因此看起来内联 qml 与执行文件的上下文不同。

如何在与我的 qml 文件相同的上下文中创建一个 C++ 组件对象?

最佳答案

我有一个可行的解决方案。加载程序项目可用于动态管理项目,而不是尝试加载内联 qml。

下面是响应鼠标点击加载项目的代码:

MouseArea
{
anchors.fill: parent
function changePlugin()
{
// unload previously loaded plugin
pluginLoader.sourceComponent = undefined;
// load new plugin
pluginLoader.sourceComponent = myPlugin;
}
onClicked: changePlugin()
}

在你想要加载它的地方插入你想要加载的定义:

Component
{
id: myPlugin
YourCustomPlugin
{
// do initialization when the object is loaded
// I call the init method of my plugin
Component.onCompleted: init();
}
}

Loader { id: pluginLoader; }

关于c++ - 不同上下文中的 QtQuick 动态对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18390703/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com