2013-08-27 133 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-bridgetutorial

编辑

添加一个名为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); 
}; 

文件在您.pro添加一个名为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++"); 
} 

文件添加

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

完美答案! –

相关问题