如何从这些元素之一向 listView 的所有元素发送信号

How to send a signal to all element of a listView from one of these element

我使用 ListView 并尝试将 signal 发送到此 ListView 的所有 Elements

Signal 必须由 ListView's Element 之一发送。

我试过了,但只有发送 Element 捕获 Signal :

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0

ApplicationWindow {
    id: window
    visible: true
    width: 640
    height: 480

    ListModel {
        id: modelList
        ListElement {
            name: "Bill Smith"
        }
        ListElement {
            name: "John Brown"    
        }
        ListElement {
            name: "Sam Wise"
        }
    }

    ListView {
        width: window.width
        height: window.height    
        model: modelList
        delegate: Rectangle {
            id:elem
            signal activated()    
            width: window.width
            height: window.height/10
            color: "red"    
            Button {
                text: name
                anchors{
                    right: parent.right
                    top: parent.top
                    bottom: parent.bottom
                    margins: 10
                }
                onClicked: {
                    elem.activated()
                }
            }
            onActivated: {
                console.log("test")
            }
        }
    }
}

我想我误解了文档,但我很难为这种情况找到一个好的例子,有什么想法吗?

您可以在 ListView 的父级(例如 ApplicationWindow )中定义一个信号,并在委托中编写一个信号处理程序并将其连接到在父级中定义的信号

import QtQuick 2.7
import QtQuick.Controls 2.0
import QtQuick.Layouts 1.0

ApplicationWindow {
    id: window
    visible: true
    width: 640
    height: 480

    signal someSignal(int arg);

    ListModel {
        id: modelList
        ListElement {
            name: "Bill Smith"
        }
        ListElement {
            name: "John Brown"    
        }
        ListElement {
            name: "Sam Wise"
        }
    }

    ListView {
        width: window.width
        height: window.height    
        model: modelList
        delegate: Rectangle {
            id:elem
            signal activated()    
            width: window.width
            height: window.height/10
            color: "red"
            Connections{
                target: window
                onSomeSignal: {
                     console.log("Argument: " + arg);
                }
            } 
            Button {
                text: name
                anchors{
                    right: parent.right
                    top: parent.top
                    bottom: parent.bottom
                    margins: 10
                }
                onClicked: {
                    window.someSignal(1);
                }
            }
            onActivated: {
                console.log("test")
            }
        }
    }
}