2011-04-27 86 views
3

有誰知道如何創建一個可以使用滑塊包裝的文本編輯器? 我試圖做到這一點,但我有一個問題,結合環......qml 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的右側slier

。滑塊現在根據文本移動,但它(滑塊)doe的不控制textEdit框...我怎麼可以添加此操作? (在我的方式,它帶來了結合環)

+0

你可以發佈一些代碼示例並描述你在問題中引用的問題嗎? – bruno 2011-04-27 10:34:15

+0

我加了我的代碼 – dan 2011-04-27 10:57:09

+0

我不想用鼠標滾動,只用滑塊... – dan 2011-04-27 14:07:31

回答

0

也許你可以抓住鍵盤按鈕按下事件與自定義插槽,如果關鍵事件匹配左,右箭頭即

請看看這裏:link的QWidget的:: grabKeyboard()