Как отправить QJsonObject с использованием QWebChannel в Qt

Я реализую HTML-оболочку в Qt, используя QWebChannel, и я вполне могу отправить строку, но я бы очень хотел отправить QJsonObject, Не строку json типа «{a: 1, b: 2}», а Qt QJsonObject. Является ли это возможным?

официальная документация гласит

«Не требуется ручная передача сообщений и сериализация данных».http://doc.qt.io/qt-5/qwebchannel.html

Как я могу испустить сигнал с JsonObject вместо строки?

Это мой связанный класс QWebChannel

class Mapa : public QObject{
Q_OBJECT

public:
explicit Mapa();
displayMessage(const QString &message);
signals:
updateText(const QString &text); // success :sends text
updateJson( const QJsonObject   &json); // fail: sends null
updateJsond(const QJsonDocument &jsondoc);// fail: sends null
}
}

и вот мой основной код

Mapa map;
// setup the channel
QWebChannel channel;
QObject::connect(&clientWrapper, &WebSocketClientWrapper::clientConnected, &channel, &QWebChannel::connectTo);

// setup the dialog and publish it to the QWebChannel
channel.registerObject(QStringLiteral("map"), &map);

map.updateText("text");// sends "text" string

QJsonObject j;
j["Altitude"]  = 10;

map.updateJson(j); // sends "null" string
QJsonDocument doc(j);
map.updateJsond(doc); // sends "null" string

2

Решение

Вместо использования QJson семейные объекты, вы можете отправить QVariant объекты к вашему коду Javascript

  • QJsonObject знак равно QVariantMap
  • QJsonArrayзнак равно QVariantList

Вы можете использовать .toVariantMap() а также .toVariantList() методы легко конвертировать ваши объекты из объектов JSON.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]