【问题标题】:Qml Row extend last element until the endQml Row将最后一个元素延伸到最后
【发布时间】:2012-06-23 22:33:49
【问题描述】:

我有一个 QML Row 元素,里面有一个 Repeater,声明如下:

Row {
    anchors.fill: parent

    Repeater {
        ...
    }

    Rectangle {
        height: 30
        color: "black"
    }
}

我想让 Rectangle 元素将其宽度从中继器的右侧扩展到父行的末尾。我该怎么做?

更新

【问题讨论】:

    标签: qt4 qml


    【解决方案1】:

    这应该可行:

    Row {
        anchors.fill: parent
    
        Repeater {
            id: repeater
            ...
        }
    
        Rectangle {
            height: 30
            color: "black"
            width: parent.width - repeater.width
        }
    }
    

    【讨论】:

    • 它就是这样工作的。它向右延伸矩形,但它不尊重父行宽度,因此它超出父边框并继续到窗口的末尾。
    • 它有,你应该从黑色矩形的宽度中减去行的左边距:parent.width - repeater.width - parent.anchors.leftMargin
    • 不,它没有设置边距,边距应用于父项。我尝试删除 parent.anchors.leftMargin 没有成功。要开始看到缩小的矩形尺寸,我必须手动减去一个大数字,例如 300
    • 我认为你应该减去行左侧的所有边距,甚至是行父级父级或行父级父级父级的左边距......或者,如果你正在使用x 在行的左侧创建该空格,您应该减去该x 的值。我希望 Qt 开发人员会考虑制作一些附加属性,例如 Row.extend
    • 我解决了这个问题,使用 onItemAdded 事件计算中继器的宽度。否则,宽度为0。我也很希望将来会有像Row.extend这样的东西
    【解决方案2】:

    我使用下面的代码解决了,因为中继器宽度不会自动设置为等于所有项目的总宽度总和

    Repeater {
        id: repeater
        ...
        onItemAdded: {
            repeater.width += item.width
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2018-12-04
      • 1970-01-01
      • 2017-11-28
      • 1970-01-01
      • 2012-04-08
      • 2021-05-26
      • 2019-04-02
      • 2012-04-02
      • 1970-01-01
      相关资源
      最近更新 更多