2 个不同 QML 之间的 QML 信号和时隙
Posted
技术标签:
【中文标题】2 个不同 QML 之间的 QML 信号和时隙【英文标题】:QML signal and slot between 2 different QML 【发布时间】:2021-04-30 05:18:05 【问题描述】:我需要根据 button.qml 中的按钮按下来在 main.qml 中执行一些操作。按钮 QML 内的按钮位于某个自定义对象内。让我们给它一个名字customObject。所以 button.qml 中的 customObject 看起来像这样:
customObject
id:trialObject
signal backPagePressed()
Button
id:button1
MultitouchArea
onPressed:
trialObject.backPagePressed()
现在当我按下按钮时,它会发出backPagePressed()
。我的问题是:如何在主 QML 中为这个信号创建一个插槽?我熟悉 C++ 中的信号和槽机制,但这不适用于 QML。我在 main.qml 中做了这样的事情:
Loader
id:pageLoader
onBackPagePressed:
pageLoader.source =""
那部分需要删除Loader的源码,才能回到之前的页面。但是,我不确定onBackPagePressed:
...如何将我的信号backPagePressed
连接到加载程序中的相关部分?
【问题讨论】:
【参考方案1】:您应该将Connections
对象(记录在here)与Loader
的item
属性一起使用:
Loader
id: pageLoader
source: "CustomObject.qml"
Connections
target: pageLoader.item
//Qt < 5.15
onBackPagePressed: pageLoader.source = ""
//Qt >= 5.15
function onBackPagePressed()
pageLoader.source = ""
【讨论】:
我将该连接创建为 Loader 的兄弟。但它找不到 onBackPagePressed。是否与该信号在另一个 qml 中有关? 我的意思是孩子不是兄弟姐妹* 您应该将source
设置为具有信号的CustomObject。它确实可以是兄弟姐妹
如何设置源?文档中没有说明。我对 QML 很陌生。
@Amfasis 您应该更新您的答案以描述自 Qt 5.15 以来的新连接语法,例如 function onBackPagePressed()
而不是 onBackPagePressed:
以上是关于2 个不同 QML 之间的 QML 信号和时隙的主要内容,如果未能解决你的问题,请参考以下文章