8

Qt HTML5 アプリケーションの作成方法を示すオンラインのチュートリアルはありません。理想的には、Webkit と Qt の間でデータを送信する方法 (文字列で十分です) が必要です。

Qt HTML5 アプリケーションを作成すると生成されます

  1. myApp.pro
  2. html5applicationviewer.pri // コメントは、このファイルに触れないでくださいと言っています
  3. html5applicationviewer.h // コメントは、このファイルに触れないでくださいと言っています
  4. html5applicationviewer.cpp // コメントは、このファイルに触れないでくださいと言っています
  5. main.cpp
  6. index.html

では、ブラウザと通信する関数を C++ に追加する方法と、C++ と通信する関数をブラウザに追加する方法を教えてください。

4

1 に答える 1

17

この例は古いですが、まだ機能しており、非常にシンプルでクリーンです。

また、qtwebkit-bridgeチュートリアルをご覧になることもできます。

編集

というファイルを追加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;
于 2013-09-01T19:33:54.883 に答える