2013-08-27 3 views
8

Ни одно из доступных обучающих программ не показывает, как создать приложение Qt HTML5. В идеале, мне просто нужен способ отправки данных (строка будет делать) между webkit и Qt.Как отправить данные в браузер и из браузера с помощью приложения Qt HTML5

Когда я создаю приложение Qt HTML5 Он генерирует

  1. myApp.pro
  2. html5applicationviewer.pri // комментарии говорят Не трогайте этот файл
  3. html5applicationviewer.h // комментарии говорят Не трогайте этот файл
  4. html5applicationviewer.cpp // комментарии говорят Не трогайте этот файл
  5. main.cpp
  6. index.html

Как я могу добавить функцию в C++ для связи с браузером и как добавить функцию в браузере для связи с C++?

ответ

17

This example старый, но все еще работает и очень прост и чист.

Также вы можете взглянуть на qtwebkit-bridge и tutorial.

редактировать

добавить файл с именем 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); 
}; 

добавить файл с именем 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++"); 
} 

в вашем .pro добавить

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

в вашем .html добавить

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

в вашем main.cpp дополнения включают в себя:

#include "myclass.h" 

и изменения:

Html5ApplicationViewer viewer; 

к:

MyClass viewer; 
+0

Не знаете, почему этот ответ еще не был принят! спасибо, это очень помогло мне, я не думаю, что addToJavaScriptWindowObject документирован для Html5ApplicationViewer так, как вы описали. отлично :) – mamod

+0

Я, наконец, вернулся к этому проекту, и ваши инструкции работали отлично. Первая попытка! – user1873073

+0

безупречный ответ! –

 Смежные вопросы

  • Нет связанных вопросов^_^