2013-04-18 3 views
0

Обзор:Каков наилучший способ реализации взаимодействия между qwebview?

Я пытаюсь создать приложение PoC, которое имитирует функцию WebIntents. Итак, в моем приложении Qt я создаю два QWebviews, запускающих два разных webApps. Теперь давайте назовем их приложения А и В.

Сценарий:

  • Main Application создает два QWebViews каждый запускает App т.е. APPA, AppB.
  • Приложение A запрограммировано на получение некоторых данных через AJAX, автоматически.
  • Приложение B также нуждается в части этих данных. AppB просто отображает кнопку (HTML). Примечание: Поскольку AppA уже имеет эту информацию, я бы хотел, чтобы AppB вызывал JavaScript API, который был введен в DOM приложения (appB) с помощью вызова метода addToJavaScriptWindowObject() при запуске QWebView.
  • Приложение-A завершило вызов Ajax и указывает завершение в своем WebView.
  • Пользователь нажимает кнопку в AppB,
  • Приложение B вызывает, что JavaScript API i.e fetcData ({source: "AppA");
  • Теперь управление находится в QT-мире:

Вопрос: Контроль в контексте AppB, Как я должен общаться с WebView в AppA - т.е. AppB спрашивает AppA: эй AppA , пожалуйста, дайте мне эти данные, которые вы получили?

Может ли сигнал и слоты помочь мне здесь? Или я должен использовать другую форму IPC.

Я прочитал эту страницу: http://qt-project.org/doc/qt-4.8/qtwebkit-bridge.html, но я все еще не получил подсказки для решения моей проблемы.

Другой связанный вопрос вопрос: Являются ли QWebViews созданными в своих потоках?

ответ

0

Не можете ли вы просто emit своего рода signal из AppB, который в основном говорит: «Эй, я закончил получать мои данные, если кто-то этого хочет», или я чего-то не хватает? Это произойдет в конце AppB::fetchData().

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

+0

Извините, в моем вопросе была опечатка, я только что исправил это. – Karthik

+0

AppB пока не нуждается в таком сигнале. Так как это доказательство концепции. Я не делал AppA, чтобы испускать «готовые данные» «готовые» сигналы типа. Таким образом, пользователь (т. Е. Я) нажимает кнопку в AppB для извлечения данных через QT. Это можно было бы сделать, увидев, что QWebView AppA заполнен полученными данными. – Karthik

+0

Итак, в этом случае AppB должен получить дескриптор WebView AppA и вызвать метод AppB :: fetchData (в QT-CPP). Этот метод, в свою очередь, должен вызвать JavaScript-код QWebView AppB, который имеет данные! Я не совсем уверен, как это сделать. – Karthik