2017-02-16 36 views
1

背景: 我想创建一个使用qt的跨平台应用程序。发现如何通过q​​ml在移动设备上创建新窗口?

解决方案

 MouseArea { 
      id: toOtherViewClicked 
      width: 44 
      anchors.fill: parent 

      onClicked: { 
       var component = Qt.createComponent("listOfMaterials.qml") 
       var window = component.createObject("secondQML") 
       window.show() 
      } 
     } 

问题 它的行为很古怪。窗口显示几分钟,然后再次返回主窗口。是否有可能以适当的方式展示新窗口?

+0

请提供[完整的示例](http://stackoverflow.com/help/mcve)。另外,当窗口消失时,您是否看到任何错误消息? – Mitch

回答

1

应登录的Component.onDestruction()

最有可能的GarbageCollector擦拭你的窗口,你有没有父集。
component.createObject()的正确语法将对象(父级)作为第一个参数。你传递一个字符串。如果你传递一个对象,机会很好,GarbageCollector不会擦拭你新创建的窗口,直到父对象被销毁。

让它像:

var window = component.createObject(toOtherViewClicked) 
+0

这很有道理,谢谢!但在这种情况下,“toOtherViewClicked”是一个mouseArea的id,我不应该发送一个窗口的ID? –

+0

这取决于你。如果你手头有一个窗户,为什么不呢。唯一的要求是,由id引用的对象超出创建的第二个窗口。 – derM

+1

谢谢,先生!欣赏你花费的时间! –