如何使用锚在 Flickable 中垂直间隔 QML 对象?

Posted

技术标签:

【中文标题】如何使用锚在 Flickable 中垂直间隔 QML 对象?【英文标题】:How to space vertically QML objects in a Flickable using anchors? 【发布时间】:2022-01-17 15:19:01 【问题描述】:

如何使用锚点在 Flickable 中垂直分隔 QML 对象?

代码 sn-p(在此消息的下方复制)应该显示由 C++ 模型提供的文本和图像(C++ 对象在此 sn-p 中命名为 Global)。

我收到一条错误消息:

anchors  top: _lblMsg1.bottom+8; 

你明白我想要做什么了:我希望图像的顶部比其上方文本的底部低 8 个像素。

我收到一条错误消息,但它似乎可以正常工作。

请告诉我,我该如何正确地做到这一点?

<...>
Flickable 
    anchors.fill: parent;

    Label 
        id: _lblMsg1;
        text: Global.dataMessages.byId(Global.currService.msg_text1_id);
        anchors  top: parent.top; left:parent.left; right: parent.right; 
    
    Image 
        id: _imgUri1;
        cache: false;
        source: (Global.currService && Global.currService.img_uri1 ? Global.currService.img_uri1 : "");
        asynchronous: true;
        anchors  top: _lblMsg1.bottom+8; left:parent.left; right: parent.right;
        horizontalAlignment: Image.AlignHCenter;
        fillMode: (Image.width > 400 ? Image.Stretch : Image.Pad);
    
<...>

【问题讨论】:

您通常会在此处使用Column 而不是锚点来定位您的项目。 【参考方案1】:

锚点只接受其他锚线作为它们的值。但是,您可以使用边距来调整锚定,如下所示:

anchors  
    top: _lblMsg1.bottom;
    topMargin: 8;
    left:parent.left;
    right: parent.right;

【讨论】:

以上是关于如何使用锚在 Flickable 中垂直间隔 QML 对象?的主要内容,如果未能解决你的问题,请参考以下文章

Qt Quick QML Flickable 禁用轻弹并仅启用滚动

如何让信任锚在 Android API 级别 16-19 上正常工作

如何在 QML 中处理来自父 Flickable 的 gridview contentY 和 Y 位置

Qt QML 锚在自定义项中不起作用

Childview宽度锚在stackView中不起作用

当散列锚在 URL 中时显示选择 DIV