QML TreeView: transientScrollbar не отображается при наведении мыши - PullRequest
0 голосов
/ 25 февраля 2019

Я пытаюсь использовать transientScrollbars в моем QML-дереве.Я импортировал «QtQuick.Controls.Styles 1.4» и включил их.

  • Полосы прокрутки не отображаются автоматически, если навести указатель мыши на область полосы прокрутки.
  • Если я использую QtQuick.Controls 2. * он работает нормально

Они появляются, если я использую колесо прокрутки.В течение небольшого периода времени, когда они видны, они реагируют на события при наведении мыши.

Эту проблему можно воспроизвести, добавив следующие строки кода в TreeView в filesystembrowser примера Qt:

import QtQuick.Controls.Styles 1.4

[...]

    style: TreeViewStyle {
        transientScrollBars: true
    }

[...]

Это минимальный пример с просмотром прокрутки.

import QtQuick 2.9
import QtQuick.Controls 1.5
import QtQuick.Controls.Styles 1.4

ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Scroll")

    ScrollView {
        width: 200
        height: 200
        clip: true

        style: ScrollViewStyle {
            transientScrollBars: true
        }

        Label {
            text: "ABC"
            font.pixelSize: 224
        }
    }
}

Как сделать так, чтобы это событие при наведении мыши работало, чтобы показать мои переходные полосы прокрутки?Я должен использовать QtQuick.Controls 1. * для моего TreeView.

Я посмотрел в ScrollViewStyle , но я немного растерялся.В качестве быстрого решения я попытался добавить свою личную область мыши, чтобы вызвать событие для отображения ScrollBar.Но я застрял на том, что и как вызвать это в ScrollViewStyle.

РЕДАКТИРОВАТЬ: Я нашел быстрое, но грязное решение для моей проблемы:

[...]
MouseArea {
    height: testView.height
    width: 20
    anchors.right: testView.right
    anchors.top: testView.top
    hoverEnabled: true
    onEntered: testView.__listView.contentY = testView.__listView.contentY + 0.1
    preventStealing: false
    propagateComposedEvents: false
}
[...]

Byувеличивая мой __treeView.contentY на небольшое число, treeView визуально не перемещается, но переходные полосы прокрутки отображаются на введенном.Мне не нравится это решение, потому что должен быть способ показывать полосы прокрутки, не перемещая treeView ...

...