【问题标题】:How to send data to and from the browser with a Qt HTML5 Application如何使用 Qt HTML5 应用程序向浏览器发送数据和从浏览器发送数据
【发布时间】:2013-08-27 21:29:00
【问题描述】:

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

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

  1. myApp.pro
  2. html5applicationviewer.pri // cmets 说不要碰这个文件
  3. html5applicationviewer.h // cmets 说不要碰这个文件
  4. html5applicationviewer.cpp // cmets 说不要碰这个文件
  5. main.cpp
  6. index.html

那么如何在C++中添加一个函数与浏览器通信,如何在浏览器中添加一个函数与C++通信呢?

【问题讨论】:

    标签: qt qtwebkit


    【解决方案1】:

    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;
    

    【讨论】:

    • 不知道为什么这个答案还没有被接受!!谢谢,这对我有很大帮助,我认为 addToJavaScriptWindowObject 没有按照您描述的方式为 Html5ApplicationViewer 记录。太棒了:)
    • 我终于回到了这个项目,你的指示非常有效。第一次尝试!
    • 完美答案!
    猜你喜欢
    • 2014-02-24
    • 2013-01-31
    • 2011-12-04
    • 1970-01-01
    • 2015-10-22
    • 1970-01-01
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多