需要为qml listListView(水平)中的列表项添加垂直分隔符(1px宽度的行)

时间:2016-10-13 14:40:25

标签: qml

我在委托中给出了矩形。这导致了分隔线,它们是列表项本身的一部分(这是不期望的)。请建议如何使分隔符(行)与列表项无关。 如果我从委托中写出矩形,则只绘制线条。

目的是在按钮栏中的按钮(列表项)之间添加一行。 我的代码是:

ChinoListCatalog {
    objectName : "alertButtonBar"
    id: alertButtonBar
    anchors.horizontalCenter: parent.horizontalCenter
    width: 730
    height: 66

    orientation: ListView.Horizontal

    delegate: AlertButton { //a separate file which returns buttons  
        id: alertButton
        width: 100
        onSignalButtonAction: alertButtonBar.onSignalButtonAction(index, action)

        Rectangle { // Separator
            colour : "white"
            height: parent.height
            visible : true
        }
    }
    boundsBehavior: Flickable.StopAtBounds
    pressDelay: 100
}

2 个答案:

答案 0 :(得分:2)

也许是这样的?它是一个垂直的ListView,但它应该很容易适应垂直的。如果它是最后一个元素(height: (index === lm.count - 1 ? 0 : 1)

,您也可以省略该行
ListModel {
    id: lm

    ListElement {}
    ListElement {}
    ListElement {}
    ListElement {}
    ListElement {}
    ListElement {}
    ListElement {}
    ListElement {}
}

ListView {
    model: lm

    width: 100
    height: 200

    delegate: Item {
        width: 100
        height: 42
        Rectangle {
            anchors.fill: parent
            anchors.topMargin: 1
            anchors.bottomMargin: 1
            id: butt
            Text {
                anchors.centerIn: parent
            text: index
            }
        }
        Rectangle {
            height: 1
            color: 'green'
            anchors {
                left: butt.left
                right: butt.right
                top: butt.bottom
            }
        }
    }
}

诀窍基本上不是使用按钮作为委托的根元素,而是使用单独的项目,您可以在其中按照您希望的方式排列所有内容。

如果您有任何疑问,请随时提出 如果您正在寻找答案,请不要忘记查看此答案。

问候
-m-

答案 1 :(得分:-1)

    ListModel {
        id: lm
        ListElement {} ListElement {} ListElement {} ListElement {}
    }

    Rectangle
    {
        width : 200
        height : 100
        anchors.centerIn: parent

    ListView {
        model: lm
        anchors.left: parent.left
        width: 400
        height: 50

        orientation : ListView.Horizontal
        delegate: Item {
            width: 51
            height: 60
            Rectangle {
                anchors.fill: parent
                anchors.rightMargin: 1
                anchors.topMargin : 10
                id: butt
                Rectangle {
                    anchors.centerIn: parent
                width : 50
                height : 50
                color :'blue'
                radius : 10
                }
                Rectangle {
                    id : leftOne
                    height: 50
                    width: 1
                    color: 'red'
                    visible : (index < 3) //last element in the list should not have separator
                    anchors {
                        left: butt.right
                    }
                }
            }
        }
        //spacing : 2
    }
 }