2017-02-12 10 views
0

Я хотел бы сделать, чтобы Scrollbar.vertical in Flickable area всегда виден. в настоящее время это видно при нажатии. Также область текста перекрывается полосой прокрутки. Как я могу sepearate скроллбар с текстовой областью в следующем коде QML enter image description hereКак сделать полосу прокрутки всегда видимой на Flckable в 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 
    } 
} 
+0

Вы можете легко создать «автономный» элемент и управлять им, привязывая его к свойствам flickable вместо использования встроенного поведения по умолчанию. – dtech

+0

@ddriver: это простое решение. но я пытаюсь использовать по умолчанию эффективно – Bupa

+1

Вы можете попробовать установить 'active: true'. Согласно документации, это верно, когда полоса прокрутки видима. Он используется, например, [сделать видимость прокрутки] зависимыми друг от друга] (http://doc.qt.io/qt-5/qml-qtquick-controls2-scrollbar.html#binding-the-active-state-of- horizontal-and- вертикальная прокрутка-баре). – BaCaRoZzo

ответ

2

Кажется active -свойства предложенного BaCaRoZzo переписываются с помощью таймера каждых несколько секунд, если он просто устанавливаются в true. Таким образом, вы можете использовать знак onActiveChanged, чтобы каждый раз перезагружать его до true.

Однако вы также можете отключить его, установив opacity из contentItem на 1. По крайней мере, для меня это делает трюк.

Чтобы разместить свое позиционирование: просто привяжите его.

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

ScrollBar { 
    id: myvertscroll 
    anchors.left: myflickable.right 
    contentItem.opacity: 1 
} 
1

При обновлении до 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 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^