【问题标题】:Errors with Customized ScrollBar Sizing Porting Qt 5.15 QML to Qt 6.0.2 QML将 Qt 5.15 QML 移植到 Qt 6.0.2 QML 的自定义 ScrollBar 大小错误
【发布时间】: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 不能正确缩放并且不能滚动:

【问题讨论】:

  • 暂且不论,我建议在自定义滚动条组件中使用属性horizontalvertical 有条件地绑定其implicitWidth 和高度。

标签: qt qml scrollbar qt6


【解决方案1】:

在撰写本文时,该问题似乎已被接受为 Qt 6 中的已验证错误(请参阅here),已分配@​​987654323@ 级别。截至发文前几个月,an article by Phoronix 指出 Qt 中存在超过 1000 个P1 - Critical 错误,因此尚不清楚较低级别的P2 是否会很快受到关注。

可能可以使用外部的非附加滚动条来解决此问题,但需要注意不要破坏过程中的可滑动行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-03-25
    • 1970-01-01
    • 1970-01-01
    • 2023-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-29
    相关资源
    最近更新 更多