我试图在QtQuick中绕过PathView
。我创建一个PathView
和一个合适的委托没有任何困难,以便沿着路径"呈现这些委托。但是,我无法找到这个"沿着"暗示,即代表如何附加到路径上。请考虑以下示例,其中路径通过页面的垂直中心:
import QtQuick 2.8
import QtQuick.Controls 2.1
ApplicationWindow {
visible: true
id: app
width: 1280
height: 720
color: "#330000"
PathView {
id: pathView
anchors.fill: parent
model: 6
delegate: Rectangle {
id: item
height: app.height * 0.5
width: app.width * 0.25
border.width: 5
border.color: "#2f2f2f"
color: "#d2d2d2"
scale: PathView.itemscale
z: PathView.z
}
interactive: true
pathItemCount: 5
preferredHighlightEnd: 0.5
preferredHighlightBegin: 0.5
path: Path {
startX: 0
startY: app.height * 0.5
PathAttribute { name: "z"; value: 0 }
PathAttribute { name: "itemscale"; value: 0.5 }
PathLine {
x: app.width * 0.5
y: app.height * 0.5
}
PathAttribute { name: "z"; value: 100 }
PathAttribute { name: "itemscale"; value: 1 }
PathLine {
x: app.width
y: app.height * 0.5
}
PathAttribute { name: "z"; value: 0 }
PathAttribute { name: "itemscale"; value: 0.5 }
}
}
}
此代码生成此呈现:idle timeout
路径上的物品显然与垂直中心相连,没有明确指示是否也涉及水平中心。
现在我想将项目放在路径的顶部,即矩形应该是底部对齐,其底部边框位于屏幕的中心。换句话说,我想通过底部锚点而不是中心来附加它们。
Qt文档在那里没什么大不了的。我能否在没有恶意黑客攻击的情况下实现这一目标,如果是这样,我该怎么做?
答案 0 :(得分:1)
您的案例中的问题是由比例引起的,如果我们评论该行,我们会得到以下内容:
并且观察到它是对齐的。 Scale使用名为transformOrigin
的参考点,默认情况下是项目的Item.Center
,在您的情况下,它应该是Item.Bottom
。
进行以下更改:
delegate: Rectangle {
id: item
height: app.height * 0.5
width: app.width * 0.25
y:0
border.width: 5
border.color: "#2f2f2f"
color: "#d2d2d2"
scale: PathView.itemscale
transformOrigin: Item.Bottom // +++
z: PathView.z
}
获得: