Qml 使矩形宽度填充滚动视图

Qml 使矩形宽度填充滚动视图,qml,qt5,qtquick2,qtquickcontrols,Qml,Qt5,Qtquick2,Qtquickcontrols,我试图在滚动视图中获取一些内容,以便在宽度中展开以适应屏幕。滚动视图定位到主窗口 例如,矩形: ScrollView { anchors.fill: parent //mainWindow Rectangle { color: "light grey" height: 1000 width: mainWindow.width } } 但是,当垂直滚动条出现时,它会遮住矩形。我可以用一个神奇的常数来修正它: width: m

我试图在
滚动视图
中获取一些内容,以便在
宽度
中展开以适应屏幕。
滚动视图
定位到主窗口

例如,
矩形

ScrollView {
    anchors.fill: parent //mainWindow
    Rectangle {
        color: "light grey"
        height: 1000
        width: mainWindow.width
    }
}
但是,当垂直滚动条出现时,它会遮住
矩形
。我可以用一个神奇的常数来修正它:

width: mainWindow.width - 20
但是如果有人的电脑上有更大的滚动条呢?当垂直滚动条不可见时,它会在右侧留下一个丑陋的空白


是否有一种方法可以自动了解
滚动视图中的可用空间?

无需明确调整滚动条。您可以让它填满整个可用的父空间。如果要指定页边距:

ScrollView {
    id: scrollView
    anchors.fill: parent // mainWindow ?
    anchors.centerIn: parent // anchoring as asked
    anchors.margins: 20

    contentItem:
        Rectangle {
        id: rectScroll
        width: scrollView.viewport.width  // set as viewport
        height: 1000 // set to what you need
    }
}
最初的问题之所以得以解决,主要是因为
矩形的
width
属性设置为
parent.parent.width
scrollView.viewport.width
,因为它更合适。后者肯定更好,只要滚动区域的
宽度
,而不是父
宽度
(通常不保证只包含此
滚动视图