5
- में एक कोड में कहीं से भी QML जड़ वस्तु प्राप्त कैसे (एक वर्ग विधि एक सी ++ कोड में कहीं से भी एक रूट वस्तु (कोड के नीचे रिटर्न 0,
rootContext()->findChild()
भी रिटर्न 0) को पुनः प्राप्त करने में जहां वर्ग एक है पंजीकृत क्यूएमएल प्रकार और वर्ग घटक परिभाषा रूट का प्रत्यक्ष बच्चा है, ऑब्जेक्टनाम देखें) और रनटाइम पर उत्पन्न QQuickItem जोड़ें? - Myclass QML प्रकार के रूप में पंजीकृत है। Bottommost कोड का उपयोग कर दृश्य में QML
Button
कैसे जोड़ें?
main.qml में (टुकड़ा)क्यूटी 5.3
import QtQuick 2.3
import QtQuick.Window 2.2
Window {
objectName: root
visible: true
width: 360
height: 100
// ...
}
myclass.cpp
void myclass::add_hip()
{
setProperty("hip", 87);
QQmlEngine *engine = QtQml::qmlEngine(this);
// QObject *root = engine->rootContext()->findChild<QObject*>("womanObj");
QQuickWindow *window = qobject_cast<QQuickWindow *>(root);
QObject *wobj = window->findChild<QObject *>("womanObj");
// 1. Define a QML component.
QQmlComponent *readHipComp = new QQmlComponent(engine);
readHipComp->setData("import QtQuick.Controls 1.2\n\
Button {\n\
anchors.top: addHipBtn.top\n\
anchors.left: addHipBtn.left\n\
anchors.margins: 3\n\
text: \"Hip value\"\n\
onClicked: {\n\
msgDlg.text = myclass.hip\n\
msgDlg.open()\n\
}\
}", QUrl());
// 2. Create the component instance.
QQuickItem *readHipBtn = qobject_cast<QQuickItem *>(readHipComp->create());
// 3. Add the instance to the scene.
// readHipBtn->setParentItem(qobject_cast<QQuickItem *>(engine->rootContext()->contextObject()));
// QObject *root = QtQml::qmlContext(this)->findChild<QQuickItem *>("root");
// readHipBtn->setParent(root);
}
अद्यतन
extern QQuickWindow *window;
void myclass::add_hip()
{
//...
readHipBtn->setParentItem(window->contentItem());
//...
}
काम किया, लेकिन 3.) यह नहीं देखता अन्य main.qml वस्तुओं।
क्या आप "कहीं भी" द्वारा मतलब है? क्यूएमएल में कहीं भी? Main.cpp के अलावा C++ फ़ाइलों में कहीं भी? –
सी ++ कक्षा विधि – programmist