[SOLVED] Qt QML change item of a page dynamically

Issue

I have BasePage.qml like this:

Item {
    property alias content: loader.sourceComponent
    signal topBarLeftButtonClicked()

    TopBar {
    ...
    }

    Loader {
        id: loader
    }

    BottomBar {
    ...
    }
}

This way I can change dynamically the content of the page, but I must use Component, and I can’t read properties of the content in a DerivedPage.
For example:

DerivedPage.qml

BasePage {
    onTopBarLeftIconClicked: item.text //error, item is not defined

    content: Component {
        TextField {
            id: item
        }
    }
}

Any solution?

Solution

I found a way to replace loader and components:

//BasePage.qml
Item {
    default property alias data: item.data
    signal topBarLeftButtonClicked()

    TopBar {
    ...
    }

    Item{
        id: item
    }

    BottomBar {
    ...
    }
}

//DerivedPage.qml
BasePage {
    onTopBarLeftIconClicked: textField.text = "string"

    TextField {
        anchors.fill: parent
        id: textField
    }
}

This way textField replace item in BasePage.qml

Answered By – Fausto01

Answer Checked By – Cary Denson (BugsFixing Admin)

Leave a Reply

Your email address will not be published. Required fields are marked *