zoukankan      html  css  js  c++  java
  • QML---自定义滚动条

    Window {
        id: root
        visible: true
         500
        height: 500
     
        color: "#535353"
        Rectangle{
            id: dst
            //(0,0)
        }
     
        ListView{
            id: view
            anchors.fill: parent
            anchors.margins: 100
            model: 15
            spacing: 10
            clip: true
     
            delegate: Rectangle{
                 parent.width
                height: 50
                //产生随机颜色
                color: Qt.rgba(Math.random(),Math.random(),Math.random())
                Text {
                    anchors.centerIn: parent
                    text: index
                }
                MouseArea{
                    id: msa
                    anchors.fill: parent
                    onClicked: {
                        //相对于dst(0,0)点的位置坐标
                        var pos = dst.mapFromItem(msa,mouse.x, mouse.y);
                        console.log(pos.x,pos.y)
                    }
                }
            }
        }
     
        // 滚动条  风格样式以效果图未注
        Rectangle {
            id: scrollbar
            anchors.right: view.right
            anchors.top: view.top
             10
            height: view.height
            color: "lightgray"
            clip: true
     
            // 按钮
            Rectangle {
                id: button
                x: 0
                //view.visibleArea.yPosition表示一个变量,初始值为0,滚动条滚到底部时最大
                y: view.visibleArea.yPosition * scrollbar.height
                 10
                //滚动按钮的长度为view.height/view.contentHeight*scrollbar.height;与下方代码等价
                height: view.visibleArea.heightRatio * scrollbar.height;
                color: "green"
     
                // 鼠标区域
                MouseArea {
                    id: mouseArea
                    anchors.fill: button
                    //使得按钮可以上下拖动
                    drag.target: button
                    drag.axis: Drag.YAxis
                    drag.minimumY: 0
                    drag.maximumY: scrollbar.height - button.height
     
                    // 拖动
                    onMouseYChanged: {
                        view.contentY = button.y / scrollbar.height * view.contentHeight
                    }
                }
            }
        }
    }
     

     使用Scrollbar实现

    import QtQuick.Controls 2.0
    
    Rectangle {
        id: frame
        clip: true
         160
        height: 160
        border.color: "black"
        anchors.centerIn: parent
    
        Text {
            id: content
            text: "ABC"
            font.pixelSize: 300
            x: -hbar.position * width
            y: -vbar.position * height
        }
    
        ScrollBar {
            id: vbar
            hoverEnabled: true
            active: hovered || pressed
            orientation: Qt.Vertical
            size: frame.height / content.height
            anchors.top: parent.top
            anchors.right: parent.right
            anchors.bottom: parent.bottom
        }
    
        ScrollBar {
            id: hbar
            hoverEnabled: true
            active: hovered || pressed
            orientation: Qt.Horizontal
            size: frame.width / content.width
            anchors.left: parent.left
            anchors.right: parent.right
            anchors.bottom: parent.bottom
        }
    }
  • 相关阅读:
    c# 解决读取Excel混合文本类型,数据读取失败的解决方法
    c#中的常用ToString()方法总结
    vsts
    RSA加密解密
    odbc连接数据库
    SerialPort
    C# Winform下载文件并显示进度条
    c# 面试题
    SQL Server 存储过程
    mysql 事务处理
  • 原文地址:https://www.cnblogs.com/vczf/p/12549021.html
Copyright © 2011-2022 走看看