How to make an item to fill all available vertical space in QML? : I have a Page with a header (PageTitle item) and a footer (Button) and I did not find a better solution how to make an item (Flickable) to fill all the window client area (the vertical space between the header and footer) than calculating its height as follows:

        GridLayout {
            rows: 3
            columns: 1
            flow: GridLayout.LeftToRight
            width: parent.width

            PageTitle {
                id: title
                Layout.fillWidth: true
                text: qsTr("How to play")
            }

            Flickable {

                width: window.width - 30 - 30
                height: window.height - (30 + title.height + 10 + closeButton.height + 10 + 30)
                flickableDirection: Flickable.VerticalFlick

                TextArea.flickable: TextArea {
                    id: field
                    //height: 300
                    text: root.getText()
                    wrapMode: Text.Wrap
                    readOnly: true
                }

                ScrollBar.vertical: ScrollBar { }
            }

            Button {
                id: closeButton
                Layout.topMargin: 10
                Layout.alignment: Qt.AlignRight
                text: scene.firstRunFlag ? qsTr("Next") : qsTr("Close")
                onClicked: close()
            }
        }

is there a better way (without knowing the header and footer height), like in WPF, for example, where you can easily create grid with 3 rows and make the first and third rows fixed height and the second row auto height?