2013-08-27 10 views
8

Żaden z tutorialów dostępnych online nie pokazuje, jak utworzyć aplikację Qt HTML5. Idealnie, po prostu potrzebuję sposobu na wysyłanie danych (ciąg znaków zrobi) między webkitem a Qt.Jak wysyłać dane do przeglądarki iz przeglądarki za pomocą aplikacji Qt HTML5

Podczas tworzenia aplikacji Qt HTML5 Generuje

  1. myApp.pro
  2. html5applicationviewer.pri // komentarze powiedzieć nie dotykaj tego pliku
  3. html5applicationviewer.h // komentarze powiedzieć nie dotykaj tego pliku
  4. html5applicationviewer.cpp // komentarze powiedzieć nie dotykaj tego pliku
  5. main.cpp
  6. index.html

Jak dodać funkcję w C++ do komunikacji z przeglądarką i jak dodać funkcję w przeglądarce do komunikacji z C++?

Odpowiedz

17

This example jest stary, ale nadal działa i jest bardzo prosty i czysty.

Możesz również rzucić okiem na qtwebkit-bridge i tutorial.

edit

dodać plik o nazwie myclass.h

#include "html5applicationviewer/html5applicationviewer.h" 

class MyClass : public Html5ApplicationViewer 
{ 
    Q_OBJECT 
public: 
    explicit MyClass(QWidget *parent=0); 
private slots: 
    void addToJavaScript(); 
public slots: 
    QString test(const QString &param); 
}; 

dodać plik o nazwie myclass.cpp

#include <QDebug> 
#include <QGraphicsWebView> 
#include <QWebFrame> 

#include "myclass.h" 

MyClass::MyClass(QWidget *parent) : Html5ApplicationViewer(parent) { 
    QObject::connect(webView()->page()->mainFrame(), 
      SIGNAL(javaScriptWindowObjectCleared()), SLOT(addToJavaScript())); 
} 

void MyClass::addToJavaScript() { 
    webView()->page()->mainFrame()->addToJavaScriptWindowObject("MyClass", this); 
} 

QString MyClass::test(const QString &param) { 
    qDebug() << "from javascript " << param; 
    return QString("from c++"); 
} 

w swojej .pro dodać

SOURCES += main.cpp myclass.cpp 
HEADERS += myclass.h 

w swojej .html dodać

try { 
    alert(MyClass.test("test string")); 
} catch(err) { 
    alert(err); 
} 

w main.cpp dodatku obejmują:

#include "myclass.h" 

i zmienić:

Html5ApplicationViewer viewer; 

do:

MyClass viewer; 
+0

Nie wiem, dlaczego ta odpowiedź nie została jeszcze zaakceptowana !! dzięki, to była dla mnie wielka pomoc, nie sądzę, że addToJavaScriptWindowObject jest udokumentowany dla Html5ApplicationViewer zgodnie z opisem. super :) – mamod

+0

W końcu wróciłem do tego projektu i twoje instrukcje działały idealnie. Pierwsza próba! – user1873073

+0

idealna odpowiedź! –

Powiązane problemy