我正在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 上再次重复它,它有效。
你需要让ListView控制委托位置。
但最简单的解决方案很简单:委托一个项目,然后将矩形等放入其中,根据需要放置它们。或者使用直接提供此功能的 Qt.Quick.Controls,我认为。
为了便于查看发生的情况,您可以添加边框:一个填充项目并具有透明背景和彩色边框的矩形。