0

I try to pass Object from qml to c++ as a parameter of slot, is it possible to get in c++? In slot in c++ I have empty variable QVariant(QJSValue, ). I need to pass Object as a map to c++ (QMap<QString,QString>). Is it possible to pass an object this way?

Some.h

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

Some.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
    }
}
  • 'Item { Button { onClicked: registeredInQmlVar.someSlot({Login:"Cash",Password:"123"})//call slot and pass Object with two parameters } }' If I call slot without quotes in keys -> I have QMap() type in c++ but it still empty... – Artem Redko Sep 01 '22 at 21:48

1 Answers1

0

My mistake was quotes in keys of passed object and convert with QMap<QString,QVariant> data = variableToPass.toMap();