QML:只有一行可见 TableView 与行和项目委托

Posted

技术标签:

【中文标题】QML:只有一行可见 TableView 与行和项目委托【英文标题】:QML: Only One Row visible TableView with Row and Item Delegates 【发布时间】:2014-09-13 05:51:21 【问题描述】:

在以下代码中:

Rectangle
    width:  parent==null ? 640: parent.width 
    height:  parent==null ? 480: parent.height 

    Image 
        id: mainBackground
        anchors.fill: parent
        source: "qrc:///wallDiscoveryBackground"
        fillMode: Image.PreserveAspectFit

        TableView 
            id: wallDiscoveryTable
            anchors.margins: parent.width * 0.6
            width: parent.width

            clip: true

            model: discoveredWallsTableModel

            TableViewColumn  role: "name"; width: 240; title: "Name" 
            TableViewColumn  role: "ipAddress"; width: 240; title: "IP Address" 
            TableViewColumn  role: "status"; width: 240; title: "Status" 

            rowDelegate: wallDiscoveryRowDelegate    //comment out
            itemDelegate: wallDiscoveryItemDelegate  //comment out
        

        Component 
            id: wallDiscoveryRowDelegate
            Rectangle 
                width: wallDiscoveryTable.width
                height: 640
            
        

        Component 
            id: wallDiscoveryItemDelegate
            Text 
                anchors.verticalCenter: parent.verticalCenter
                color: styleData.textColor
                text: styleData.value
            
        
    

如果我注释掉设置行和项目代表的行(我用“//comment out”标记的行),那么表格渲染得很好,表明我指定的模型是正确的。但是,当我设置行和项目委托时,我只获得了呈现的表格的第一行。

有人可以指出第二种情况(使用行和项目代表)有什么问题吗?

【问题讨论】:

【参考方案1】:

您的代表很大。 640 像素是大多数屏幕高度的一半以上。由于模型不存在,您的代码无法正常运行,但如果我使用虚拟模型并将高度降低到 100 像素,我会看到其他项目。此外,即使使用当前代码,您也应该能够向下滚动以查看其他项目。

【讨论】:

以上是关于QML:只有一行可见 TableView 与行和项目委托的主要内容,如果未能解决你的问题,请参考以下文章

如何在鼠标事件上更改 QML 的 TableView 中一行的颜色?

QML TableView 禁用水平滚动条

QML Tableview显示选定行的值

来自文件的 QML TableView

QML - 在重叠的 Text 和 TextArea 之间动态交换可见性/不透明度

TableView 的 QML 大小不正确