• 3540阅读
  • 7回复

[提问]可能上次没说清楚,再描述下问题,关于textarea 滚动条悬停设置 [复制链接]

上一主题 下一主题
离线t62858216
 

只看楼主 倒序阅读 楼主  发表于: 2017-11-27
回复本帖可获得15RMB金钱奖励!
每人最多可获奖1次,奖池剩余75RMB金钱 (中奖几率10%)
在textarea中,右边的滚动条,我想实现实现靠近右边界区域显示滚动条并悬停,
transientScrollBars : bool //这个只是实现的滚动显示滚动条,求老手指导下。
离线小韩老师

只看该作者 1楼 发表于: 2017-11-27
去你安装目录找到,比如Qt5.9的C:\Qt\Qt5.9.0\5.9\Src\qtquickcontrols\src\controls\Styles\Base\ScrollViewStyle.qml
这个就是ScrollViewStyle的qml实现方式,
里边有滑动条 property Component handle: Item {.../}
以及背景 property Component scrollBarBackground: Item {}
一堆内容你稍微修改一下就可以实现你需要的方式,比如说那个当停靠时就透明度就是0,移开时透明度就是1
实现方式各种各样。之后就将ScrollViewStyle的两个属性替换就一下可以了。

离线t62858216

只看该作者 2楼 发表于: 2017-11-28
回 小韩老师 的帖子
小韩老师:
去你安装目录找到,比如Qt5.9的C:\Qt\Qt5.9.0\5.9\Src\qtquickcontrols\src\controls\Styles\Base\ScrollViewStyle.qml
这个就是ScrollViewStyle的qml实现方式,
里边有滑动条 property Component handle: Item {.../}
以及背景 property Component scrollBarBackground: Item {}
一堆内容你稍微修改一下就可以实现你需要的方式,比如说那个当停靠时就透明度就是0,移开时透明度就是1
.......

感谢大神的回复,我前面也看了下文档,不知道哪有属性可以设置靠近改变透明度,新手请见谅

    property Component scrollBarBackground: Item {
        property bool sticky: false
        property bool hovered: styleData.hovered
        implicitWidth: Math.round(TextSingleton.implicitHeight)
        implicitHeight: Math.round(TextSingleton.implicitHeight)
        clip: true
        opacity: transientScrollBars ? 0.5 : 1.0
        visible: !Settings.hasTouchScreen && (!transientScrollBars || sticky)
        Rectangle {
            anchors.fill: parent
            color: "#ddd"
            border.color: "#aaa"
            anchors.rightMargin: styleData.horizontal ? -2 : -1
            anchors.leftMargin: styleData.horizontal ? -2 : 0
            anchors.topMargin: styleData.horizontal ? 0 : -2
            anchors.bottomMargin: styleData.horizontal ? -1 : -2
        }
        onHoveredChanged: if (hovered) sticky = true
        onVisibleChanged: if (!visible) sticky = false
    }
离线小韩老师

只看该作者 3楼 发表于: 2017-11-28
需要自己有探索精神,当然没有你说的设置一个属性就可以满足你的需要了,你需要根据自己的需要去定制一些东西。方法很多,里边有个显示的visible,你可以通过一些附加的操作或者外部控件,根据需要设置为true或者false
离线t62858216

只看该作者 4楼 发表于: 2017-11-28
回 小韩老师 的帖子
小韩老师:需要自己有探索精神,当然没有你说的设置一个属性就可以满足你的需要了,你需要根据自己的需要去定制一些东西。方法很多,里边有个显示的visible,你可以通过一些附加的操作或者外部控件,根据需要设置为true或者false (2017-11-28 14:45) 

谢谢你的回复 ,大致试了下,设置透明度是可以达到悬停消失,但是滚动时候不知道怎么恢复透明度并且过一段时间消失,困惑了我两天了
离线小韩老师

只看该作者 5楼 发表于: 2017-11-28

选择制作一个control2程序
设计代码
import QtQuick 2.7
import QtQuick.Layouts 1.3
import QtQuick.Controls 2.2
ApplicationWindow {
    visible: true
    width: 640
    height: 480
    title: qsTr("Hello World")

    ScrollView {
        id: view
        anchors.fill: parent

        TextArea {
            text: "TextArea\n...\n...\n...\n...\n...\n...\n"
        }
    }
  }
运行程序

不管是悬靠或者滑动都能显示滚动条,这个就是普通手机程序的设计模式,应该和你需要的一致,去学习一下就可以实现你要的功能。
离线t62858216

只看该作者 6楼 发表于: 2017-11-29
回 小韩老师 的帖子
小韩老师:[图片]
选择制作一个control2程序
设计代码
import QtQuick 2.7
import QtQuick.Layouts 1.3
....... (2017-11-28 20:47) 

谢谢了,我这还是qt 5.7版本的  好像还用不了2.2的,自己再摸索下吧
离线t62858216

只看该作者 7楼 发表于: 2017-11-29
加个定时器解决了 ,谢谢小韩老师的恢复 ,对啊这个怎么结帖额。
快速回复
限100 字节
 
上一个 下一个