如何使用Qt HTML5应用程序与浏览器之间发送数据

时间:2013-08-27 21:29:01

标签: qt qtwebkit

在线提供的教程都没有显示如何创建Qt HTML5应用程序。理想情况下,我只需要一种方法来在webkit和Qt之间发送数据(字符串可以做)。

当我创建Qt HTML5应用程序时,它会生成

  1. myApp.pro
  2. html5applicationviewer.pri //评论说不要碰这个文件
  3. html5applicationviewer.h //评论说不要碰这个文件
  4. html5applicationviewer.cpp //评论说不要触摸此文件
  5. 的main.cpp
  6. 的index.html
  7. 那么如何在C ++中添加一个与浏览器通信的函数呢?如何在浏览器中添加一个函数来与C ++通信?

1 个答案:

答案 0 :(得分: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);
};

添加名为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;