【发布时间】:2015-01-09 15:21:23
【问题描述】:
在我的 Qt Quick(Qt v5.4 和 QtQuick 2.4)项目中,我有这五个 .qml 文件:
- MainForm.ui.qml - 包含应用程序的主窗口
- main.qml - 包含 mainForm.ui.qml 对象的所有功能实现,例如 onClicked 事件、调用 c++ 函数从 textInputs 获取值等。
问:我当前用于实现功能的设置是否正确?还是应该在同一个文件中实现所有这些东西?
- dialog1.qml - 包含用于某些设置等的一些文本输入。
- dialog2.qml - 我的应用程序中的一些列表和表格。
- dialog3.qml - 还包含一些用于 c++ 函数的对象。
所有这些 qml 文件都是在不同时间、不同按钮单击时创建和销毁的。我正在使用这种方法打开一个对话框
`addMenuArea.onClicked: {
Qt.createComponent("addMenuAppDialog.qml").createObject(rootWindow, {});
}`
以及销毁对话框:
MouseArea{
anchors.fill: parent
onClicked: {
dialogComponent.destroy()
}
}
现在这些对话框没有任何功能,比如主窗口,如果可能的话,我想在一个文件(main.qml)中实现所有功能,而不需要任何 javascript。我不知道如何链接所有对话框和 main.qml,所以我可以在 main.qml 中添加函数。任何帮助都会很棒!
【问题讨论】:
-
哪个 qt 和哪个 qt-quick?缺少版本信息。
-
@user1095108 编辑问题,看看!
-
这是一种可能的方式。另一种方法是使用
Loader并更改源文件名。这将处理对象的创建/销毁。第三种方法是实例化所有对话框并隐藏所有对话框,除了应该可见的对话框,但这会占用比需要更多的内存。 -
@saiarcot895 我正在为此搜索文档。
Loader中是否有一些方法或函数可以链接对话框和 main.qml?? -
@EdwardMckinzie:
Loader.item包含对被加载的顶级对象的引用。您可以将其与Loader.source结合使用。