Câu hỏi QML: Ghi đè trình xử lý tín hiệu từ phần tử khác


Có thể ghi đè hành động của một phần tử (ví dụ: onTriggered () của Timer) từ trong nút onClick () của một nút không?

Một cái gì đó như vậy->

         Button {
                id: centerBtn
                objectName: "button"

                onClicked: {
                delaytimer.running = true;
                delayTimer.onTriggered {}; // override here

                }

                Timer {
                    id: delaytimer
                    interval: 1000
                    running: false
                    repeat: false
                    onTriggered: //something implemented here

                }
            }

2
2018-06-10 12:44


gốc




Các câu trả lời:


Bạn có thể xác định thuộc tính để lưu trữ mã của trình xử lý tín hiệu và gán lại mã khi cần:

Xem đoạn mã sau:

import QtQuick 2.0
import Ubuntu.Components 0.1

Rectangle {
    width: 200
    height: 150

    Button {
        id: foo
        text: "Foo"
        onClicked: {
            delaytimer.a = function () { console.log("Foo!") };
            delaytimer.running = true;
        }
    }

    Button {
        id: bar
        text: "Bar"
        anchors.left: foo.right
        onClicked: {
            delaytimer.a = function () { console.log("Bar!") };
            delaytimer.running = true;
        }
    }

    Timer {
        id: delaytimer
        interval: 1000
        running: false
        repeat: false
        property var a: function () { console.log("will be overridden!") };
        onTriggered: a()
    }
}

2
2018-06-10 17:45