带滑块的 qml textedit

Posted

技术标签:

【中文标题】带滑块的 qml textedit【英文标题】:qml textedit with slider 【发布时间】:2011-04-27 09:41:00 【问题描述】:

有谁知道如何创建一个可以使用滑块换行的 textEdit? 我试图这样做,但我遇到了绑定循环的问题......

代码:

Flickable
    
        id: flick
        anchors.fill:parent
        contentWidth: edit.paintedWidth
        contentHeight: edit.paintedHeight
        clip: true
        interactive :false
        contentY: slider.y
        function ensureVisible(r)
        
            if (contentY >= r.y)
                contentY = r.y;
            else if (contentY+height <= r.y+r.height)
                contentY = r.y+r.height-height;
        

        TextEdit
        
            id: edit
            width: flick.width*0.9
            height: flick.height
            focus: true
            wrapMode: TextEdit.Wrap
            onCursorRectangleChanged: flick.ensureVisible(cursorRectangle)
            text: defaultText
            color: textColor
            font.family: fontFamily
            font.pointSize: fontSize
            font.bold: bold
            font.italic: italic
            font.overline: overline
            font.underline: underline
            horizontalAlignment: alignment
            selectByMouse:true

        
    

    Rectangle
    
        id: container

        height: multiLineEdit.height
        width:multiLineEdit.width*0.1
        anchors.right:multiLineEdit.right
        anchors.top:multiLineEdit.top
        radius: 4
        opacity: 0.7
        smooth: true
        gradient: Gradient 
            GradientStop  position: 0.0; color: "gray" 
            GradientStop  position: 1.0; color: "white" 
        

        Rectangle 
            id: slider

            property int value: Math.round(container.y*100/(slider.width-container.width))
            property int tmpVal: 0

            x: 1
            y: flick.visibleArea.yPosition * flick.height//1
            width: parent.width

            //The height will change according to the flickable area (the text area)
            height: (flick.visibleArea.heightRatio > 1) ? (container.height) :(flick.visibleArea.heightRatio*container.height)
            radius: 2
            smooth: true

            color:"black"

                   MouseArea 
                anchors.fill: parent
                drag.target: parent; drag.axis: Drag.YAxis
                drag.minimumY: 0; drag.maximumY: container.height - slider.height
            
        

     

通过这种方式,我在 textEditBox 的右侧创建了一个 textEdit 和一个 slier。滑块现在根据文本移动,但它(滑块)不控制 textEdit 框...我如何添加此操作? (以我的方式,它带来了一个绑定循环)

【问题讨论】:

您能否发布一些代码示例并描述您在问题中提到的问题? 我不想用鼠标滚动,只能用滑块... 【参考方案1】:

如果键事件与左右箭头匹配,也许您可​​以使用自定义插槽获取键盘按钮按下事件,即

请看这里:link for QWidget::grabKeyboard()

【讨论】:

以上是关于带滑块的 qml textedit的主要内容,如果未能解决你的问题,请参考以下文章

标签中的实时滑块

qml:无法访问滑块组件中的 styleData

Objective c将滑块值传递给另一个类

了解 QML 滑块

如何使用自定义形状创建 QML 滑块?

QML滑块调整矩形