当前位置: 首页 > article >正文

网页端.js和qt C++ 文件 怎么进行数据传递

使用 Qt WebChannel

Qt WebChannel 是一个用于在 QML 和 HTML/JavaScript 之间进行双向通信的库。它允许你在 C++ 中定义的对象被 JavaScript 直接访问,并且支持属性绑定、信号和槽机制。

步骤:
  1. 安装 Qt WebChannel 模块:确保你的项目中包含了 QtWebChannel 模块。

  2. 设置 C++ 后端

    • 创建一个继承自 QObject 的类,并注册为可以被 WebChannel 访问的对象。
    • 将该对象注册到 QWebChannel
  3. 设置前端

    • 在 HTML 文件中引入 qwebchannel.js
    • 创建一个 QWebChannel 对象,并连接到后端提供的 QWebChannel 实例。
    • 通过 QWebChannel 对象访问 C++ 对象的方法和属性。
示例代码

C++ 代码

#include <QCoreApplication>
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QWebChannel>
#include <QWebEngineView>

class MyObject : public QObject
{
    Q_OBJECT
public:
    Q_INVOKABLE void sayHello(const QString &name) {
        qDebug() << "Hello, " << name;
    }
};

int main(int argc, char *argv[])
{
    QCoreApplication app(argc, argv);

    QQmlApplicationEngine engine;
    QWebChannel *channel = new QWebChannel(&engine);
    MyObject myObject;
    channel->registerObject(QStringLiteral("myObject"), &myObject);

    QWebEngineView view;
    view.page()->setWebChannel(channel);
    view.setUrl(QUrl("qrc:/index.html"));
    view.show();

    return app.exec();
}

#include "main.moc"

HTML + JavaScript 代码 (index.html)

<!DOCTYPE html>
<html>
<head>
    <title>Qt WebChannel Example</title>
    <script src="qrc:///qtwebchannel/qwebchannel.js"></script>
    <script>
        var myObject;
        new QWebChannel(qt.webChannelTransport, function (channel) {
            // 获取 C++ 对象
            myObject = channel.objects.myObject;

            // 调用 C++ 方法
            myObject.sayHello("World");
        });
    </script>
</head>
<body>
    <h1>Qt WebChannel Example</h1>
</body>
</html>


http://www.kler.cn/a/370514.html

相关文章:

  • 20250118拿掉荣品pro-rk3566开发板上Android13下在uboot和kernel启动阶段的Rockchip这个LOGO标识
  • Excel 技巧10 - 如何检查输入重复数据(★★)
  • 华为数据中心CE系列交换机级联M-LAG配置示例
  • 02.02、返回倒数第 k 个节点
  • js基础---var与let的区别以及const的使用
  • MERN全栈脚手架(MongoDB、Express、React、Node)与Yeoman详解
  • MySQL5.7实现 row_number() over()函数的功能
  • 《计算机网络》期末复习资料
  • 最新影响因子排名和分区出炉!一本IEEE Trans上榜On Hold
  • python道格拉斯算法的实现
  • 基于springboot的旅游出行指南
  • 【electron+vue3】使用JustAuth实现第三方登录(前后端完整版)
  • BUG的跟踪管理
  • VLAN聚合
  • java后端项目技术记录(二)
  • 服务器耗电量怎么计算?
  • NineData快速生成大量有意义的测试数据
  • 数据清洗与分析工具详解:Pandas 和 NumPy 的全面教程
  • 《掌握 Java:从基础到高级概念的综合指南》(5/15)
  • 线程同步(互斥锁条件变量)
  • Phpwind GET型CSRF任意代码执行
  • UE5 喷射背包
  • Flink CDC系列之:理解学习YARN模式
  • 威胁 Windows 和 Linux 系统的新型跨平台勒索软件:Cicada3301
  • Armstrong‘s axiom
  • lvs知识点归纳