7

我想让 Flickable 区域中的 Scrollbar.vertical 始终可见。目前它在点击时可见。文本区域也与滚动条重叠。如何在以下 qml 代码中将滚动条与文本区域分开在此处输入图像描述

import QtQuick 2.0
import QtQuick.Controls 2.0

Flickable {
    id: flickable
    anchors.fill: parent


    TextArea.flickable: TextArea {
        text: "The Qt QML module provides a framework for developing applications and libraries with the QML language.
It defines and implements the language and engine infrastructure, and provides an API to enable application developers to
extend the QML language with custom types and integrate QML code with JavaScript and C++.

The Qt QML module provides both a QML API and a C++ API.
Note that while the Qt QML module provides the language and infrastructure for QML applications,
the Qt Quick module provides many visual components, model-view support, an animation framework,
and much more for building user interfaces.
For those new to QML and Qt Quick, please see QML Applications for an introduction to writing QML applications."
        wrapMode: TextArea.Wrap
        font.pixelSize: 20
    }
    ScrollBar.vertical: ScrollBar {
        width: 40
    }
}
4

3 回答 3

12

如果升级到 Qt 5.9,则QtQuick.Controls 2.2引入一个policy可以提供帮助的属性,例如

import QtQuick 2.0
import QtQuick.Controls 2.2

Flickable {
    id: flickable
    ...
    ScrollBar.vertical: ScrollBar {
        width: 40
        anchors.left: parent.right // adjust the anchor as suggested by derM
        policy: ScrollBar.AlwaysOn
    }
}
于 2017-06-01T15:53:03.000 回答
3

似乎BaCaRoZzoactive建议的 -property每隔几秒就会被计时器覆盖,如果它只是设置为. 因此,您可以使用-signal 将其重置为每次。trueonActiveChangedtrue

但是,您也可以通过将 的 设置为 1 来禁用它opacitycontentItem至少对我来说,这可以解决问题。

解决您的定位问题:只需锚定它。

Flickable {
    id: myflickable
    ...
    ScrollBar.vertical: myvertscroll
    clip: true
}

ScrollBar {
    id: myvertscroll
    anchors.left: myflickable.right
    contentItem.opacity: 1
}
于 2017-02-13T11:39:45.703 回答
0

其他解决方案对我不起作用。所以我试图覆盖 contentItem。此外,我必须添加一个恒定的宽度。

使用 Qt 5.7 和 QtQuick.Controls 2.0 测试。

ListView {
    id: listView
    ...

    ScrollBar.vertical: ScrollBar {
        width: 10
        contentItem: Rectangle {
            color: "black"
        }
    }
} 
于 2018-11-09T07:44:58.730 回答