项目作者: toby20130333

项目描述 :
基于QtQuick的C++,qml,Html三者的Bridge交互
高级语言: JavaScript
项目地址: git://github.com/toby20130333/QtQuickHtmlBridge.git
创建时间: 2018-08-01T06:21:44Z
项目社区:https://github.com/toby20130333/QtQuickHtmlBridge

开源协议:

下载


基于QtQuick的C++,qml,Html三者的Bridge交互

bridge

主要功能

  • 自定义C++对象并注册到QML

  • 可以在QML中继续扩展C++对象的属性和方法 信号等

  • 将C++对象注入到WebChannel

  • Html中引入C++对象

  • JavaScript与C++直接交互

示例代码说明

  1. main.cpp:
  2. //该实例必须直接继承自Object的 QWidget的忽略
  3. qmlRegisterType<DDQmlObejct>("DDuiObejct",1,0,"DDQmlObejct");
  4. qml:
  5. //需要将这个对象注册到channel里面
  6. DDQmlObejct{
  7. id: myObject
  8. // the identifier under which this object
  9. // will be known on the JavaScript side
  10. // signals, methods and properties are
  11. // accessible to JavaScript code
  12. WebChannel.id: "DDCore" //这个id可在html中使用
  13. //qml中继续扩展信号
  14. signal someSignal(string message);
  15. //监听C++的信号
  16. onSignalSendToQml: {
  17. messageId.append(message);
  18. }
  19. //自定义函数
  20. function someMethod(message) {
  21. console.log(message);
  22. someSignal(message);
  23. slotShowMessage(message)
  24. return "someMethod:"+message;
  25. }
  26. //扩展的函数 可以定义很多函数
  27. function getThisFilePath(filepath){
  28. var d = getFileContents(filepath);
  29. someMethod(d);
  30. return d
  31. }
  32. //扩展属性
  33. property string hello: "world"
  34. }
  35. ===========以下为webengineview的实例和WebChannel的实例===============
  36. //需要注册一个WebChannel对象
  37. WebChannel{
  38. id:changedId
  39. registeredObjects:[myObject]//可以将多个对象注册到这里
  40. }
  41. //主web界面
  42. WebEngineView {
  43. id:webview
  44. anchors.left: parent.left
  45. anchors.top: parent.top
  46. width: parent.width/2
  47. anchors.bottom: parent.bottom
  48. url: "qrc:/chatRecord.html"
  49. webChannel:changedId//指定该对象的沟通桥梁WebChannel
  50. }

有问题反馈

在使用中有任何问题,欢迎反馈给我,可以用以下联系方式跟我交流

关于作者

  1. var duoduozhijiao = {
  2. nickName : "寒山-居士",
  3. site : "http://www.heilqt.com",
  4. blog : "http://blog.heilqt.com"
  5. }