【发布时间】:2019-12-02 07:44:11
【问题描述】:
当我将一个子元素添加到 Flickable 时,它会将其锚定在整个控件的左侧,但我希望 flickable 的子元素锚定在整个控件的右侧(我认为当 flickable 内部有任何内容时,它的 flickableItemimplicitWidth影响整个控件的宽度,这就是为什么我不能使用anchors.right = parent.right),Flickable 中没有layoutDirection 属性,LayoutMirroring 不能在 flickable 中工作,我如何强制 Flickable 从其主体的右边距绘制孩子?
这是我的轻弹控件:
// ScrollableItem.qml
Flickable{
id:root
contentWidth: pane.implicitWidth
contentHeight: pane.implicitHeight
boundsBehavior: Flickable.StopAtBounds
flickableDirection: Flickable.AutoFlickIfNeeded
default property alias content : pane.contentItem
Pane{
id:pane
}
ScrollIndicator.vertical: ScrollIndicator{
}
ScrollIndicator.horizontal: ScrollIndicator{
}
}
我是这样使用它的:
ScrollableItem{
width : parent.width
height : parent.height
RowLayout{
spacing: 500
layoutDirection: Qt.RightToLeft
Button{
}
Button{
}
Button{
}
}
}
Qml 不关心 width : parent.width 的 ScrollableItem 并且如果我在控件内部设置宽度它不会轻弹,我也尝试在孩子中使用 anchors.right 但没有用。有没有办法强制可轻弹的孩子从屏幕右侧流出?
你看到窗格锚定在哪里了吗?将窗格锚定到右侧是不可能的,并且没有布局方向,窗格的宽度取决于子宽度,这是一个 rowLayout,因此如果窗格宽度低于可滑动宽度,它将始终绘制在我想要绘制的可滑动的左边缘flickable 的右边缘
【问题讨论】:
-
文档说 注意:由于实现细节,放置在 Flickable 内的项目不能锚定到 Flickable。而是使用 parent,它指的是 Flickable 的 contentItem。内容项的大小由 contentWidth 和 contentHeight 决定。
-
你能详细解释一下你想要达到的目标吗? Flickable 并没有真正流动任何东西。您是否希望内容默认在其右端滚动?你试过玩内容位置吗?
-
@ymoreau 这张图片够详细吗?
-
更清楚了,谢谢。
标签: qt qml right-to-left flickable