在QML中渲染ListView项 - 模拟器

时间:2011-08-09 14:47:53

标签: listview rendering emulation qml

您好我有以下简单的QML应用程序:

import QtQuick 1.0
import com.nokia.symbian 1.0

Window {
   id: window

   StatusBar {
       id: statusBar
       anchors.top: window.top
   }

   TabBar {
       id: tabBar
       anchors.top: statusBar.bottom

    TabButton {
        id: someButton
        text: "Something"
        tab: somePage
    }
}

TabGroup {
    id: tabGroup
    anchors.top: tabBar.bottom
    anchors.bottom: toolBar.top
    anchors.left: parent.left
    anchors.right: parent.right
    Page {
        id: somePage
        ListView {
            id: someLView
            anchors.fill: parent
            model: someModel
            delegate:
                    Text {
                        text: name
                        color: "white"
                    }
        }
    }
}

ToolBar {
    id: toolBar
    anchors.bottom: window.bottom
    tools: ToolBarLayout {
        id: toolBarLayout
        ToolButton {
            flat: true
            iconSource: "toolbar-back"
            onClicked: Qt.quit()
        }
    }
}

ListModel {
    id: someModel
    ListElement {
        name: "Element1"
    }
    ListElement {
        name: "Element2"
    }
    ListElement {
        name: "Element3"
    }
    ListElement {
        name: "Element4"
    }
    ListElement {
        name: "Element5"
    }
    ListElement {
        name: "Element6"
    }
    ListElement {
        name: "Element7"
    }
    ListElement {
        name: "Element8"
    }
    ListElement {
        name: "Element9"
    }
    ListElement {
        name: "Element10"
    }
    ListElement {
        name: "Element11"
    }
    ListElement {
        name: "Element12"
    }
    ListElement {
        name: "Element13"
    }
    ListElement {
        name: "Element14"
    }
    ListElement {
        name: "Element15"
    }
    ListElement {
        name: "Element16"
    }
    ListElement {
        name: "Element17"
    }
    ListElement {
        name: "Element18"
    }
    ListElement {
        name: "Element19"
    }
    ListElement {
        name: "Element20"
    }
    ListElement {
        name: "Element21"
    }
    ListElement {
        name: "Element22"
    }
    ListElement {
        name: "Element23"
    }
}
}

但是当我尝试在模拟器上运行它时,这是移动列表时的常见行为:

  1. 列表“Element1”的第一行甚至在TabBar上呈现 通过StatusBar
  2. 以下行列出“Element2”到xxx,以便这样做 当他们完全渲染TabBar然后他们 dissapear。 (例如“Element2”已经没有渲染,但是“Element3”被渲染,因为它没有完全覆盖TabBar
  3. 为什么会出现这种情况? 看图: Rendering of items in ListView Emualtor

    更新: 我添加了

    anchors.fill: parent
    

    到Page元素,但这并没有解决问题

    解决 clip:true需要添加到ListView

2 个答案:

答案 0 :(得分:7)

添加

clip: true 

到ListView

答案 1 :(得分:0)

您将listview锚定在页面内,但不是页面本身。您没有在TabGroup中指定页面应该执行的操作。尝试将锚点添加到Page元素。