Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt QML信号和2个不同QML之间的插槽_Qt_Qml - Fatal编程技术网

Qt QML信号和2个不同QML之间的插槽

Qt QML信号和2个不同QML之间的插槽,qt,qml,Qt,Qml,我需要根据button.qml中的button press执行main.qml中的一些操作。按钮QML的按钮内部是一些自定义对象的内部。让我们给它命名为customObject。button.qml中的customObject如下所示: customObject { id:trialObject signal backPagePressed() Button { id:button1 MultitouchArea { onPressed: { trialObject.backPagePr

我需要根据button.qml中的button press执行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 =""
}
}

该部分需要删除加载程序的源代码,以便返回到之前的页面。但是,我不确定BackPagePressed:。。。如何将我的信号
backPagePressed
,连接到我的加载器中的相关部分?

您应该使用
连接
对象(文档)以及
加载器的
属性:

Loader {
    id: pageLoader 
    source: "CustomObject.qml"
}

Connections {
    target: pageLoader.item

    //Qt < 5.15
    onBackPagePressed: pageLoader.source = ""

    //Qt >= 5.15
    function onBackPagePressed()
    {
        pageLoader.source = ""
    }
}
加载器{
id:pageLoader
来源:“CustomObject.qml”
}
联系{
目标:pageLoader.item
//Qt<5.15
onBackPagePressed:pageLoader.source=“”
//Qt>=5.15
函数onBackPagePressed()
{
pageLoader.source=“”
}
}

我将该连接创建为Loader的同级。但它找不到onBackPagePressed。它是否与另一个qml中的信号有关?我的意思是孩子不是兄弟姐妹*您应该将
源设置为具有该信号的CustomObject。它确实可以是兄弟姐妹我如何设置源?文件中没有说明。。我是QML的新手。@Amfasis您应该更新您的答案,以描述Qt 5.15以来的新连接语法,例如
函数onbackpagespressed(){
而不是
onbackpagespressed:{