如何通过 qml 在移动设备中创建新窗口?
Posted
技术标签:
【中文标题】如何通过 qml 在移动设备中创建新窗口?【英文标题】:How to create new window in mobile devices via qml? 【发布时间】:2017-02-16 10:36:07 【问题描述】:背景: 我正在尝试使用 qt 创建一个跨平台应用程序。
解决方案 我 找到:
MouseArea
id: toOtherViewClicked
width: 44
anchors.fill: parent
onClicked:
var component = Qt.createComponent("listOfMaterials.qml")
var window = component.createObject("secondQML")
window.show()
问题 问题 它的行为真的很奇怪。窗口显示几分钟,但随后又回到主窗口。是否可以以适当的方式呈现新窗口打开?
【问题讨论】:
请提供complete example。另外,当窗口消失时,您是否看到任何错误消息? 【参考方案1】:您应该登录Component.onDestruction()
GarbageCollector
很可能会擦除您的窗口,因为您没有设置父级。component.createObject()
的正确语法将对象(父对象)作为第一个参数。您改为传递一个字符串。如果你传递一个对象,很有可能GarbageCollector
不会擦除你新创建的窗口,直到父对象被销毁。
把它变成这样:
var window = component.createObject(toOtherViewClicked)
【讨论】:
有道理,谢谢!但在这种情况下,“toOtherViewClicked”是鼠标区域的 id,我不应该发送窗口的 id 吗? 这取决于你。如果你手头有一个窗口的 id,为什么不呢。唯一的要求是,由 id 引用的对象比创建的第二个窗口的寿命更长。以上是关于如何通过 qml 在移动设备中创建新窗口?的主要内容,如果未能解决你的问题,请参考以下文章
如何通过级联QML在blackberry 10设备文档目录中创建XML文件?