Как использовать QJSEngine для доступа к дочернему элементу QObject в js-скрипте?

Из официального документа Qt Doc написано:

Сигналы и слоты, свойства и дочерние объекты доступны в качестве свойств созданного QJSValue.

Поэтому я ожидаю получить доступ к дочерним объектам QObject, но я не могу найти правильный способ сделать это.

У меня есть код, как показано ниже:

QWidget parent;
QLabel label(&parent);
label.setText("Hello World");
QJSEngine engine;
QJSValue jsv = engine.newQObject(&parent);

engine.globalObject().setProperty("w", jsv);

qDebug() << engine.evaluate("JSON.stringify(w);").toString();
// qDebug() << engine.evaluate("w.myLabel.text").toString(); // Does not work, how to access myLabel.text in script

Вывод отладки показан ниже, но я не могу найти информацию о дочерней метке (например, текст "Hello World") в этом выводе. Итак, мой вопрос, как получить доступ к QLabel (objectName: "myLabel") в сценарии js?

{
    "objectName": "",
    "modal": false,
    "windowModality": 0,
    "enabled": true,
    "geometry": {},
    "frameGeometry": {},
    "normalGeometry": {},
    "x": 0,
    "y": 0,
    "pos": {},
    "frameSize": {},
    "size": {},
    "width": 640,
    "height": 480,
    "rect": {},
    "childrenRect": {},
    "childrenRegion": {},
    "sizePolicy": {},
    "minimumSize": {},
    "maximumSize": {},
    "minimumWidth": 0,
    "minimumHeight": 0,
    "maximumWidth": 16777215,
    "maximumHeight": 16777215,
    "sizeIncrement": {},
    "baseSize": {},
    "palette": {},
    "font": {},
    "cursor": {},
    "mouseTracking": false,
    "isActiveWindow": false,
    "focusPolicy": 0,
    "focus": false,
    "contextMenuPolicy": 1,
    "updatesEnabled": true,
    "visible": false,
    "minimized": false,
    "maximized": false,
    "fullScreen": false,
    "sizeHint": {},
    "minimumSizeHint": {},
    "acceptDrops": false,
    "windowTitle": "",
    "windowIcon": {},
    "windowIconText": "",
    "windowOpacity": 1,
    "windowModified": false,
    "toolTip": "",
    "toolTipDuration": -1,
    "statusTip": "",
    "whatsThis": "",
    "accessibleName": "",
    "accessibleDescription": "",
    "layoutDirection": 0,
    "autoFillBackground": false,
    "styleSheet": "",
    "locale": {},
    "windowFilePath": "",
    "inputMethodHints": 0
}

0 ответов

Другие вопросы по тегам