I figured it out. The Text element does indeed need to have its width dictated according to its container. The proper way to do this dynamically in my example is Layout.fillWidth: true.
Further, to get Flicker.contentHeight to work without a binding loop I had to set static coordinates for the ColumnLayout inside the Flicker. See code below:
import QtQuick 2.12
import QtQuick.Controls 2.5
import QtQuick.Layouts 1.12
Flickable {
id: root
property int margins: 10
interactive: true
contentHeight: outer.implicitHeight + margins * 2
contentWidth: width
ColumnLayout {
id: outer
y: margins
x: margins
width: parent.width - margins * 2
GroupBox {
title: 'One'
Layout.fillWidth: true
ColumnLayout {
id: inner
anchors.fill: parent
spacing: 10
CheckBox {
text: "Hide Interactive Process"
Layout.fillWidth: true
}
Text {
text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
wrapMode: Text.WordWrap
Layout.fillWidth: true
}
CheckBox {
text: "Hide Layers"
Layout.fillWidth: true
}
Text {
text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
wrapMode: Text.WordWrap
Layout.fillWidth: true
}
CheckBox {
text: "Hide ToolBars"
Layout.fillWidth: true
}
Text {
text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
wrapMode: Text.WordWrap
Layout.fillWidth: true
}
}
}
GroupBox {
title: 'Two'
Layout.fillWidth: true
ColumnLayout {
anchors.fill: parent
spacing: 10
CheckBox {
text: "Hide Interactive Process"
Layout.fillWidth: true
}
Text {
text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
wrapMode: Text.WordWrap
Layout.fillWidth: true
}
CheckBox {
text: "Hide Layers"
Layout.fillWidth: true
}
Text {
text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
wrapMode: Text.WordWrap
Layout.fillWidth: true
}
CheckBox {
text: "Hide ToolBars"
Layout.fillWidth: true
}
Text {
text: "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
wrapMode: Text.WordWrap
Layout.fillWidth: true
}
}
}
}
}