I have figured this out, by using states and setting the parent. It's not particularly fluid but it works
StateGroup {
    id: stateGroup
    states: [
        State {
            name: "landscape"
            when: root.width >= 400
            PropertyChanges {
                target: issueDetails
                parent: issueDetailsSplitViewContainer
            }
            PropertyChanges {
                target: issueDetailsSplitViewContainer
                visible: true
            }
            PropertyChanges {
                target: issueDetailsDrawer
                visible: false
                position: 0
            }
        },
        State {
            name: "portrait"
            when: root.width < 400
            PropertyChanges {
                target: issueDetails
                parent: issueDetailsDrawerContainer
            }
            PropertyChanges {
                target: issueDetailsSplitViewContainer
                visible: false
            }
        }
    ]
}