QWebChannel после того, как я зарегистрировал некоторые объекты, мне нужно зарегистрировать новый объект в Js, но он не может вызвать эти новые объекты cpp функциями

В некоторых случаях мне нужно зарегистрировать некоторые объекты в qwebchannel, а далее в приложении мне нужно зарегистрировать новый объект в qwebchannel. Дело в том, что он не показывает ошибки для этого нового объекта, но когда я пытаюсь вызвать С++ из этого нового объекта, ничего не происходит.

Я делаю что-то вроде:

Сначала зарегистрируйте два объекта:

      this->mWebView->mViewChannel->registerObject("object1", this);
this->mWebView->mViewChannel->registerObject("object2", this);

а также

      registerJsObject << R"(new QWebChannel(qt.webChannelTransport, function (channel) {)";
    registerJsObject << R"window.object1 = channel.objects.object1";
    registerJsObject << R"window.object2 = channel.objects.object2";
    registerJsObject << R"(}))";
    page->runJavaScript(registerJsObject.join("\n"));

И с этим на стороне Js я могу вызывать все функции от js до cpp с этими объектами. Но в какой-то момент мне нужно зарегистрировать новый объект, например:

      this->mWebView->mViewChannel->registerObject("dialog", dialog);

а затем мне нужно снова создать экземпляр других объектов:

      registerJsObject << R"(new QWebChannel(qt.webChannelTransport, function (channel) {)";
    registerJsObject << R"window.object1 = channel.objects.object1";
    registerJsObject << R"window.object2 = channel.objects.object2";
    registerJsObject << R"window.dialog = channel.objects.dialog";
    registerJsObject << R"(}))";
    page->runJavaScript(registerJsObject.join("\n"));

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

0 ответов

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