好吧,我知道如何从QML调用C++方法,但在这种情况下它不起作用。来自C++对象的QML调用方法
这是我的代码看起来像(它不是实际的代码,因为它是非常大的):
Container //this is my main qml element, where is everything contained and started
{
ElemA
{
id: elemA
...
}
ElemB
{
id: elemB
...
}
}
ElemA
{
MyClass
{
id: myClass
...
}
//myClass.method() //runs fine
//Now I call: elemB.myClass = myClass
//after that, if I call method() it doens't work (below is code)
}
ElemB
{
property MyClass myClass
//myClass.method() //doesn't run at all, neither shows any errors or warnings
}
ElemA和ElemB基本上都是规定从,我切换。它是这样的:一切都从状态ElemA开始,然后我可以切换到ElemB,但是当我切换时,method()不起作用(正如我上面所说的,没有错误或警告)。
当我把“elemB.myClass = myClass”,换句话说,我不能将C++对象作为属性传递给某些属性的时候,我很确定发生了某些错误(或者可能不允许,但不知何故它会通过)其他元素(带QML)。
所以我的问题是我应该如何解决这个问题?
编辑:我的代码是游戏其实。我有很多Elem,每个Elem代表一种状态(例如,ElemMenu是游戏菜单,当我按下“选项”按钮时,它会将我切换到ElemOptions状态,以便我可以做其他事情)。
MyClass是用于网络的C++实现。 现在的问题是,我需要有2种状态(网络)之间的对象的C++一个实例:
- 1状态(ElemA)正在等待客户端的连接,并接受他们
- 第二状态(ElemB)被打游戏
现在,一旦我接受了足够的客户端连接,我想开始游戏并切换到状态ElemB,但我需要具有相同的对象,以便我可以使用连接的客户端进行操作。
我曾尝试使用这种方法注入myClass的:viewer.rootContext() - > setContextProperty( “myClass的”,新MyClass的()); 后来,我无法使用“myclass”的连接在QML元素(说MyClass的属性未定义,但我可以做的方法调用像myClass.something()。
我在想什么现在重新实现MyClass的,并使其静态的。然后,我可以MyClass中的ElemA和ElemB情况下做出的,但我宁愿不如果可能的话。
QtMobility的,不是我的选择现在。
我使用Qt 1.8.1和QtCreator 2。5
我已经添加了更多信息,尽管我会尽力使这样做。感谢您的帮助。 – DRAX