我有一些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
。
如何触发顶部,父级ColumnLayout
重绘?
答案 0 :(得分:1)
使用布局类型时应使用附加的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">';
}
}
}
}
}
}