zoukankan      html  css  js  c++  java
  • QWebView中交互类接口返回值的问题

    为了实现与html的交互,我们需要在加载页面时,向页面注册一个交互对象,这个对象的所有slot函数就可以由前端通过js调用。这里讨论的是这些slot函数的返回值问题。

    前面的《QT中使用WebKit中的一些问题》一文中,我通过试验我发现这些slot函数不能返回值。但现在发现,它是可以返回值的。下面是例子:

    1. C++端

    //头文件
    public
    slots: virtual void loadIniData(); virtual void deliverData(QString datatype, QString json); //datatype是表示类型,在管理类时它可以是增删改查,在编辑类里可以是提交、修改、删除(清空) bool validateUser(QString name, QString pw, QString targetpage);
    //cpp文件
    bool LoginView::validateUser(QString name, QString pw, QString targetpage)
    {
        if(Utility::validateUser(name, pw))
        {
            if(targetpage.compare(Utility::sceManagerName) == 0)
                Utility::switchPage(Utility::sceManagerName); //进入想定管理
            else
                Utility::switchPage(Utility::scEditNameM); //进入无数据填写
        }
    }

    可以看到validateUser函数是一个slot,它返回一个bool量。

    2. js端

                        var json = "user:" + this.user +",password:"+ this.password+ ",target:"+ this.selected;
                        alert(json);                    
                        //window.secTool.deliverData("", json);
                        var suc = window.secTool.validateUser(this.user, this.password, this.selected);
                        var re = JSON.stringify(suc);
                        if(re == 'false')
                        {
                            document.getElementById("login_re").innerHTML = "用户名或密码错误......";
                        }

    C++注册的对象名是secTool,我们发现它返回的值是一个对象,所以不能简单地用if(suc==false)来判定,需要将其转换为string类型才能判定。

    这里使用了JSON.stringify方法,它将一个对象转换为了字符串。

    所以,交互类接口函数是可以返回值的,但其他类型的值我还没有试过。

  • 相关阅读:
    show parameters和强制索引失效
    ALTER INDEX 始末
    ADMIN OPTION和GRANT ANY OBJECT PRIVILEGE的问题
    oracle正则表达式函数简单总结(一)
    简单说一下Native Dynamic SQL(动态sql)和包DBMS_SQL
    金山快盘的文件上传
    桶中取黑白球问题
    读书笔记:编程之美求二进制数中1的个数
    vim配置文件.vimrc
    JVM内存管理
  • 原文地址:https://www.cnblogs.com/myboat/p/14270320.html
Copyright © 2011-2022 走看看