add quick item to quick view dynamically

This commit is contained in:
王劲鹏
2021-02-19 15:43:09 +08:00
committed by osborn
parent df8b98bc6c
commit 7ced952a57
15 changed files with 97 additions and 20 deletions

View File

@@ -3,7 +3,7 @@
QQuickItem *DoricStackNode::build() {
QQmlComponent component;
const QUrl url(QStringLiteral("qrc:/stack.qml"));
const QUrl url(QStringLiteral("qrc:/doric/qml/stack.qml"));
component.loadUrl(url);
QQuickItem *item = qobject_cast<QQuickItem *>(component.create());

View File

@@ -3,14 +3,13 @@
#include "DoricGroupNode.h"
class DoricStackNode : public DoricGroupNode
{
class DoricStackNode : public DoricGroupNode {
public:
using DoricGroupNode::DoricGroupNode;
using DoricGroupNode::DoricGroupNode;
QQuickItem *build() override;
QQuickItem *build() override;
void blendLayoutConfig() override;
void blendLayoutConfig() override;
};
#endif // DORICSTACKNODE_H

View File

@@ -4,11 +4,14 @@
#include "DoricViewNode.h"
class DoricSuperNode : public DoricViewNode {
protected:
void blendSubLayoutConfig(DoricViewNode *viewNode);
public:
using DoricViewNode::DoricViewNode;
bool mReusable = false;
};
#endif // DORICSUPERNODE_H

View File

@@ -1,5 +1,22 @@
#include "DoricViewNode.h"
#include "../utils/DoricUtils.h"
#include "DoricSuperNode.h"
void DoricViewNode::blendLayoutConfig(){
void DoricViewNode::blendLayoutConfig() {}
void DoricViewNode::setLayoutConfig(QJSValue layoutConfig) {}
void DoricViewNode::init(DoricSuperNode *superNode) {
if (DoricUtils:: instanceof <DoricSuperNode *>(this)) {
DoricSuperNode *thiz = dynamic_cast<DoricSuperNode *>(this);
thiz->mReusable = superNode->mReusable;
}
this->mSuperNode = superNode;
this->mView = build();
}
QString DoricViewNode::getId() { return mId; }
void DoricViewNode::setId(QString id) { mId = id; }
void DoricViewNode::blend(QJSValue jsValue) { qDebug() << jsValue.toString(); }

View File

@@ -5,20 +5,34 @@
#include "../utils/DoricContextHolder.h"
class DoricSuperNode;
class DoricViewNode : public DoricContextHolder {
protected:
QQuickItem *mView;
DoricSuperNode *mSuperNode;
virtual QQuickItem *build() = 0;
virtual void blendLayoutConfig();
void setLayoutConfig(QJSValue layoutConfig);
private:
QString mId;
QString mType;
public:
using DoricContextHolder::DoricContextHolder;
void init(DoricSuperNode *superNode);
QString getId();
void setId(QString id);
void blend(QJSValue jsValue);
};
#endif // DORICVIEWNODE_H