簡體   English   中英

是否有可能將 Javascript Object 從 qml 作為 QVariant 傳遞到 Z6CE809EACF90BA125B40FA4BE9 層的參數?

[英]Is there possible pass Javascript Object from qml as QVariant to c++ layer as a parameter of slot?

我嘗試將 Object 從 qml 傳遞給 c++ 作為插槽的參數,是否有可能進入 Z6CE809EACF900BA1625EZ0FA? 在 c++ 的插槽中,我有空變量 QVariant(QJSValue, )。 我需要將 Object 作為 map 傳遞給 c++ (QMap<QString,QString>)。 是否可以通過這種方式傳遞 object ?

一些.h

class Some : public QObject
{
    Q_OBJECT
public slot:
    Q_INVOKABLE void someSlot(QVariant variableToPass);
}

一些.cpp

void Some :: someSlot(QVariant variableToPass){
    qDebug()<<"Object from qml"<< variableToPass; // QVariant(QJSValue, ) empty variable!!!!!!!!!!!!!!
    qDebug()<<"variableToPass.canConvert<QJSValue>()"<<variableToPass.canConvert<QJSValue>();//true, but empty!!!
    QJSValue jsValue = variableToPass.value<QJSValue>();
    QMap<QString,QString> data = jsValue.toVariant().value<QMap<QString,QString>>();
}

some2.qml

Item {
    Button {
    onClicked: registeredInQmlVar.someSlot({"Login":"Cash","Password":"123"})//call slot and pass Object with two parameters
    }
}

我的錯誤是在傳遞的 object 的鍵中引用並使用 QMap<QString,QVariant> data = variableToPass.toMap(); 進行轉換

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM