• 5606阅读
  • 3回复

[讨论]在QML的Webview中如何获取底层C++的对象 [复制链接]

上一主题 下一主题
离线wande4mj
 
只看楼主 倒序阅读 楼主  发表于: 2012-07-05
各位大虾,我们的程序在QML中嵌入了Webview,QML代码如下


JScript code
import QtQuick 1.0
import QtWebKit 1.0
//import "./subcontents"

Rectangle {
    width: 800
    height: 480

    WebView {
    preferredWidth: 800
    preferredHeight: 480

        }
}




在QT下使用webview,把C++ object对象传给javascipt上下文可以这样用:


C/C++ code
Html5ApplicationViewerPrivate::Html5ApplicationViewerPrivate(QWidget *parent)
    : QGraphicsView(parent)
{
    //...
    m_webView = new QGraphicsWebView;
    m_pJSC = new JSCAdapter();
    connect(m_webView->page()->mainFrame(),
            SIGNAL(javaScriptWindowObjectCleared()), SLOT(addToJavaScript()));
}

void Html5ApplicationViewerPrivate::addToJavaScript()
{
    if(NULL!=m_pJSC)
    {
        m_webView->page()->mainFrame()->addToJavaScriptWindowObject(QString("jsc"), (QObject*)m_pJSC);
    }
}



这样在webview解析的javascript中就可以直接使用C++的对象m_pJSC了

在QML的webview中怎样实现类似QT的把C++ object对象传给javascipt上下文的方法。
QML的webview无法调用m_webView->page()->mainFrame()->addToJavaScriptWindowObject这样的方法。

离线wande4mj
只看该作者 1楼 发表于: 2012-07-06
自己顶,有没有大虾能指点下啊,跪谢
离线wande4mj
只看该作者 2楼 发表于: 2012-07-07
没有人知道么?
离线XChinux

只看该作者 3楼 发表于: 2012-07-09
这个没研究过,不过你可以参考QML中的webview组件的源码自己再写个新的webview然后加入自定义的slot方法和属性,以供QML中调用。
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
快速回复
限100 字节
 
上一个 下一个