如何触发 ColumnLayout 重新布局?

How can I trigger a ColumnLayout re-layout?

我有一些 Text 个元素 textFormat: Text.RichText。当图像加载时,Text 展开,但布局不会重新计算,因此元素重叠:

import QtQuick 2.7
import QtQuick.Controls 2.1
import QtQuick.Layouts 1.3

Item {
  ColumnLayout {
    Repeater {
      model: [1,2];
      delegate: Item {
        id: item;
        height: sample_col.height;
        ColumnLayout {
          id:sample_col
          Text { text: 'sample_col.height=' + sample_col.height + 
                       ' item.height=' + item.height; }
          Text {
            id: expanded_sample_html;
            textFormat: Text.RichText;
            text: '<img src="https://upload.wikimedia.org/wikipedia/commons/0/06/Kitten_in_Rizal_Park%2C_Manila.jpg">';
          }  
        }
      }
    }
  }
}

当图像最终下载到应用程序时,我看到:

因此,Text 在图像加载后重叠,因为高度是正确的,但它不会向上流动到父级 ColumnLayout

如何触发top, parent ColumnLayout重绘?

在使用布局类型时应该使用附加的 Layout 属性。

必须显式创建声明性功能是一个好兆头,表明缺少某些东西或应该重构代码。

Flickable {
    anchors.fill: parent
    contentWidth: mainColumn.width
    contentHeight: mainColumn.height
    ColumnLayout {
        id: mainColumn
        Repeater {
            model: [1,2];
            delegate: Item {
                id: item;
                Layout.preferredWidth: sample_col.width
                Layout.preferredHeight: sample_col.height
                ColumnLayout {
                    id:sample_col
                    Text { text: 'sample_col.height=' + sample_col.height +
                                 ' item.height=' + item.height; }
                    Text {
                        id: expanded_sample_html;
                        textFormat: Text.RichText;
                        text: '<img src="https://upload.wikimedia.org/wikipedia/commons/0/06/Kitten_in_Rizal_Park%2C_Manila.jpg">';
                    }
                }
            }
        }
    }
}