2017-02-16 33 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

謝謝,先生!欣賞你花費的時間! –