2015-05-29 61 views
2

我的QML有問題。我想根據某個操作編輯TextInput,並將focus屬性設置爲true。它適用於TextInput位於Rectangle,但不在ScrollView中。 下面是一個例子:在滾動視圖中編輯TextInput

Item { 
    id: main 
    width: 640 
    height: 480 

    ScrollView{ 
     id: scrollView 
     height: parent.height/2 
     width: parent.width 

     Rectangle{ 
      border.color: "black" 
      border.width: 1 
      anchors.centerIn: parent 
      height: 25 
      width: 200 
      TextInput{ 
       id: ti1 
       anchors.fill: parent 
       verticalAlignment: TextInput.AlignVCenter 
       horizontalAlignment: TextInput.AlignHCenter 
      } 
     } 

    } 

    Rectangle{ 
     y: height 
     height: parent.height/2 
     width: parent.width 

     Rectangle{ 
      border.color: "black" 
      border.width: 1 
      anchors.centerIn: parent 
      height: 25 
      width: 200 
      TextInput{ 
       id: ti2 
       anchors.fill: parent 
       verticalAlignment: TextInput.AlignVCenter 
       horizontalAlignment: TextInput.AlignHCenter 
      } 
     } 
    } 

    MouseArea{ 
     anchors.fill: parent 
     onClicked: { 
      if (mouseY < parent.height/2){ 
       ti2.focus = false 
       ti1.focus = true 
      }else{ 
       ti1.focus = false 
       ti2.focus = true 
      } 
     } 
    } 

} 

當我點擊該窗口的下半部分,該TextInput TI2可編輯。但是當我點擊上半場時,ti1不是。

有沒有人有什麼想法?行爲與TextEdit相同。

謝謝。

回答

2

我認爲這是因爲: 「只有一個項目可以是ScrollView的直接子項,並且子項被隱式錨定以填充滾動視圖。」

來源:http://doc.qt.io/qt-5/qml-qtquick-controls-scrollview.html

也許組件的樹是滾動型不可用。

但是如果你使用:的

ti1.forceActiveFocus(); 

代替:

ti1.focus = true 

它的工作原理。

相關問題