x/y 坐标在委托 QML Qt6 中不起作用

问题描述 投票:0回答:1

我正在qt 6中编写代码,我在矩形委托中使用mvc模式,我指定了x:100(第103行)属性,该属性应该将矩形向右移动100像素,这在qt 5中有效,但在qt6中,矩形的位置保持不变,这就是为什么我被迫使用锚点,而且它们的性能不是很好。为什么会出现这个问题以及如何解决?

ListView {
    id: viewMessage
    width: _writeMes.x + _writeMes.width
    height: 280
    spacing: _page.margin
    model: _messageModel

    delegate: Rectangle {
        height: 40
        width: viewMessage.width-150
        //anchors.left: isMyMessage ? undefined : parent.left
        //anchors.right: isMyMessage ? parent.right : undefined
        x: isMyMessage ? 100 : 0
        radius: 10
        color: isMyMessage ? _page.myMessageColor : _page.serverMessageColor
        property bool isMyMessage: model.sendBy === _ws.myId

        Label {
            x: 10
            color: _page.textColor
            text: 'id: ' + model.sendBy
        }

        Label {
            x: 10
            y: 15
            color: _page.textColor
            text: model.text
        }
    }
}

作为替代方案,我使用锚点,这以牺牲性能为代价提供了所需的效果。 我想在 qt5 上再次重复它,它有效。

javascript qt qml qt6
1个回答
0
投票

你需要让ListView控制委托位置。

但最简单的解决方案很简单:委托一个项目,然后将矩形等放入其中,根据需要放置它们。或者使用直接提供此功能的 Qt.Quick.Controls,我认为。

为了便于查看发生的情况,您可以添加边框:一个填充项目并具有透明背景和彩色边框的矩形。

© www.soinside.com 2019 - 2024. All rights reserved.