【发布时间】:2021-06-14 03:44:46
【问题描述】:
我正在将 GUI 从 Qt 5.15 QML 转换到 Qt 6.0.2 QML,但在 ScrollBar 行为中出现错误。我发现了 MacOS 10.15.7 的问题,但我不知道它存在于其他地方。我创建了一个最小的自定义ScrollBar 并将其附加到ListView。滚动指示器在 5.15 中工作正常,但在 6.x 中,滚动指示器填充整个滚动条,不管它是否应该。行为发生了变化还是这是一个错误?
我创建CustomScrollbar.qml如下:
import QtQuick 2.15
import QtQuick.Controls 2.15
ScrollBar {
contentItem: Rectangle {
implicitWidth: 15
color: "red"
}
}
然后在基本的ListView中使用它:
import QtQuick 2.15
import QtQuick.Window 2.15
import QtQuick.Controls 2.15
Window {
width: 300; height: 100; visible: true
ListView {
id:listView
anchors.fill:parent
ScrollBar.vertical: CustomScrollbar {}
model: ListModel {
ListElement {name: "Bill"} ListElement {name: "Bob"} ListElement {name: "Andy"} ListElement {name: "Jim"}
ListElement {name: "Ralph"} ListElement {name: "Ed"} ListElement {name: "Bill"} ListElement {name: "Bill"}
}
delegate: Text {
text: name
}
}
}
Qt 5.15 生成一个正确定位的指示器(左),但 Qt 6.0.2 不能正确缩放并且不能滚动:
【问题讨论】:
-
暂且不论,我建议在自定义滚动条组件中使用属性
horizontal和vertical有条件地绑定其implicitWidth和高度。