add sizeThatFits in scroller node

This commit is contained in:
王劲鹏
2021-04-19 21:17:40 +08:00
committed by osborn
parent 77e32d1f08
commit 5ba5f5ce6c
3 changed files with 30 additions and 7 deletions

View File

@@ -13,8 +13,6 @@ QQuickItem *DoricScrollerNode::build() {
QQuickItem *item = qobject_cast<QQuickItem *>(component.create());
this->createLayouts(item);
getLayouts()->setLayoutType(DoricLayoutType::DoricStack);
item->setProperty("wrapper", QString::number((qint64)this));
return item;
}
@@ -109,3 +107,13 @@ void DoricScrollerNode::blendSubNode(QJsonValue subProperties) {
mChildNode->blend(subProperties["props"]);
}
}
QSizeF DoricScrollerNode::sizeThatFits(QSizeF size) {
DoricLayouts *layout = (DoricLayouts *)mChildNode->getNodeView()
->property("doricLayout")
.toULongLong();
layout->apply(size);
return QSizeF(qMin(size.width(), layout->getMeasuredWidth()),
qMin(size.height(), layout->getMeasuredHeight()));
}

View File

@@ -23,6 +23,8 @@ public:
virtual void afterBlended(QJsonValue jsValue) override;
virtual void requestLayout() override;
QSizeF sizeThatFits(QSizeF size);
};
#endif // DORICSCROLLERNODE_H