如何在QML中集成Javascript库(socketio)?

时间:2016-04-25 23:40:59

标签: javascript qt socket.io qml

C++ socketio library失败后,我正试图在QT的QML中使用JavaScript库。我将客户端从https://cdn.socket.io/socket.io-1.4.5.js复制到socketio145.js

当我这样导入时:

.import "socketio145.js" as IO;

运行:

socket = IO.io();

"[error stack]Expected token :'\n"第3行的错误socketio145.js失败。这是一些非qml兼容的JavaScript代码还是其他的东西?我迷路了。

2 个答案:

答案 0 :(得分:1)

我做了一些可以解决问题的事情。 我一点都没有运气。我尝试将SocketIO的C ++库编译到我的项目中,并尝试包括JS。但是没有任何效果,图书馆只是感到困惑。

因此,我拿起Qt QWebSocket并将其包裹在温暖而模糊的外套中,该外套在qml中的外观和工作方式与SocketIO在Javascript中的工作方式非常相似。

https://github.com/Dimcon/ParthanonsQWebSocketIO

它在台式机和Android上均可使用,您要做的就是将parthanonsQWebSocket.h文件复制到您的项目中,并将该类添加到您的QML中。有关自述文件的更多信息。

我希望这可以帮助你们避免像我一样:(:)

答案 1 :(得分:0)

我没有您所指的JS库的任何细节,但这里是在QML中使用您自己的JS代码的方法。 1.将您的JS文件放入像这样的资源文件中

   <qresource prefix="/js">
      <file alias="DataManager.js">qml/js/DataManager.js</file>
   </qresource>
  1. 在QML文件中使用以下导入

    import&#34; qrc:/js/DataManager.js"作为DataManager

  2. 并使用如下的JS:

    Item {
    id : win
    visible: true
    width: 640*2
    height: 480*1.5
    
    property var constellationManager;
    
    Component.onCompleted: {
        win.constellationManager = new ConstellationDataManager.ConstellationDataManager();
    }
    

    }