2013-10-16 31 views
7

我要編寫一個具有可移動listView控件的觸摸屏應用程序。目前我的問題是,如果內容比我自己嘗試滾動時的listView本身更長/更高,那麼內容就會出現在視圖之外。我想爲QT/QML觸摸屏應用程序創建一個可滾動的ListView或tableView

enter image description here

這是我當前的代碼。我只需要一個解決方案在listview中滾動,而不是溢出其邊框。

ListModel { 
     id: listModle 
     ListElement { 
      name: "Bill Smith" 
      number: "555 3264" 
     } 
     ListElement { 
      name: "John Brown" 
      number: "555 8426" 
     } 
     ListElement { 
      name: "Sam Wise" 
      number: "555 0473" 
     } 
     ListElement { 
      name: "Bill Smith" 
      number: "555 3264" 
     } 
     ListElement { 
      name: "John Brown" 
      number: "555 8426" 
     } 
     ListElement { 
      name: "Sam Wise" 
      number: "555 0473" 
     } 
    } 

    Rectangle { 
     x: 100 
     y: 100 
     width: 180; height: 200 

     Component { 
      id: contactDelegate 
      Item { 
       width: 180; height: 40 
       Column { 
        Text { text: '<b>Name:</b> ' + name } 
        Text { text: '<b>Number:</b> ' + number } 
       } 
      } 
     } 

     ListView { 
      id: listView 
      anchors.fill: parent 
      model: listModle 
      delegate: contactDelegate 
      //highlight: Rectangle { color: "lightsteelblue"; radius: 5 } 
      focus: true 
      contentHeight: 150 


     } 


    } 

回答

11

listView exceedes的Rectangle父,因爲有太多的元素來顯示。

這很好,你只需要在你的Rectangle對象上打開clip: true即可。這樣,只有從矩形視口才能看到列表的內容。

編輯(PRO-TIP):如果ListView的高度比少封裝的父矩形,對可用性問題,你應該禁用滾動行爲。看看Qml Flickable API(尤其是interactivecontentWidth/Height)執行一些簡單的檢查;)

+0

謝謝,它的工作;-) –

+0

不客氣:)無論如何,你應該標記答案爲接受,如果這是你需要的解決方案,如果有人碰到這裏,他/她會知道這一點。 – Polentino

0

要實現成才就像一個滾動索引你可以使用:

ListView.visibleArea.yPosition 

這給百分比Y位置。

相關問題