2013-08-27 24 views
8

Không có hướng dẫn nào có sẵn hiển thị trực tuyến cách tạo ứng dụng Qt HTML5. Lý tưởng nhất, tôi chỉ cần một cách để gửi dữ liệu (một chuỗi sẽ làm) giữa webkit và Qt.Cách gửi dữ liệu đến và từ trình duyệt bằng Ứng dụng HTML5 Qt

Khi tôi tạo ra một ứng dụng Qt HTML5 Nó tạo

  1. myApp.pro
  2. html5applicationviewer.pri // ý kiến ​​nói dont chạm tập tin này
  3. html5applicationviewer.h // ý kiến ​​nói dont chạm tập tin này
  4. html5applicationviewer.cpp // ý kiến ​​nói dont chạm tập tin này
  5. main.cpp
  6. index.html

Vậy làm cách nào để thêm hàm trong C++ để liên lạc với trình duyệt và làm cách nào để thêm chức năng trong trình duyệt để liên lạc với C++?

Trả lời

17

This example cũ nhưng vẫn hoạt động và rất đơn giản và sạch sẽ.

Ngoài ra, bạn có thể muốn xem qua số qtwebkit-bridgetutorial.

chỉnh sửa

thêm một tập tin gọi là 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); 
}; 

thêm một tập tin gọi là 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++"); 
} 

trong .pro bạn thêm

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

trong .html bạn thêm

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

trong main.cpp add của bạn bao gồm:

#include "myclass.h" 

và thay đổi:

Html5ApplicationViewer viewer; 

tới:

MyClass viewer; 
+0

Không chắc tại sao câu trả lời này chưa được chấp nhận !! cảm ơn, đó là một trợ giúp lớn cho tôi, tôi không nghĩ rằng addToJavaScriptWindowObject được ghi nhận cho Html5ApplicationViewer theo cách bạn mô tả. tuyệt vời :) – mamod

+0

Cuối cùng tôi đã quay lại dự án này và hướng dẫn của bạn đã hoạt động hoàn hảo. Lần thử đầu tiên! – user1873073

+0

câu trả lời hoàn hảo! –

Các vấn đề liên quan