[QML] Property komponentu jako funkcja



  • Item {
        property function callback: function() {}
    
        Button {
           onClicked: function() {
                // do something
                callback();
        }
    }
    

    W powyższym przykładzie chciałem przekazać ideę. Czy da się w jakiś sposób przekazać taki callback z rodzica do komponentu dziecka?

    Dzięki.


  • Moderators

    Nie rozumiem idei ;-)

    Dziecko widzi wszystkie metody rodzica, więc nie trzeba callbacku - wystarczy normalnie odpalić metodę rodzica w onClicked. Funkcji nie trzeba deklarować jako property.



  • Ok. Chyba nie do końca się jasnow wyraziłem.
    Item ma być reużywalny, stąd idea callback'a, aby móc wstrzyknąć różne funkcje

    // plik MyItem.qml
    Item {
        property function onClickCallback: function() {}
    
        Button {
           onClicked: function() {
                // do something
                callback();
        }
    }
    
    // plik korzystający z MyItem
    Item {
        MyItem {
            onClickCallback: function() {
                //do something
            }
        }
    }
    

  • Moderators

    To jest kompletnie niepotrzebne. Funkcje JS można nadpisywać. Czyli:

    // plik MyItem.qml
    Item {
        function click() {}
    
        Button {
           onClicked: {
                // do something
                click();
        }
    }
    
    // plik korzystający z MyItem
    Item {
        MyItem {
            function click() {
                //do something
            }
        }
    }
    

    Powinno działać.



  • Tak, dzięki. Działa.


Log in to reply
 

Looks like your connection to Qt Forum was lost, please wait while we try to reconnect.