首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >QWebEngine & QWebChannel:页面重新加载后传输对象`qt.webChannelTransport`消失

QWebEngine & QWebChannel:页面重新加载后传输对象`qt.webChannelTransport`消失
EN

Stack Overflow用户
提问于 2016-07-15 10:43:29
回答 1查看 3.8K关注 0票数 2

我在我的应用程序和WebEngine之间创建了web通道,以便在JavaScript中的web端公开QObject,但是在页面重新加载之后,或者如果我单击到另一个页面的链接,该通道就会丢失。

我想我需要在页面重新加载频道,但我没有做到这一点。我试着在页面加载、进度和完成的插槽上做这件事,但只得到了js: Uncaught ReferenceError: qt is not defined

代码语言:javascript
运行
复制
<!-- language: lang-cpp -->
MainWindow::MainWindow(QWidget *parent) :
    QMainWindow(parent),
    ui(new Ui::MainWindow)
{
    ui->setupUi(this);

    ui->webEngineWidget->load(QUrl("qrc:/index.html"));
    page = ui->webEngineWidget->page();

    channel = new QWebChannel;
    channel->registerObject("external", &exposedObject);
    page->setWebChannel(channel);

    connect(page, &QWebEnginePage::loadStarted, this, &MainWindow::onPageLoadStarted);
    connect(page, &QWebEnginePage::loadProgress, this, &MainWindow::onPageLoadProgress);
    connect(page, &QWebEnginePage::loadFinished, this, &MainWindow::onPageLoadFinished);
}

MainWindow::~MainWindow()
{
    delete ui;
}

void MainWindow::onPageLoadStarted()
{
    qDebug() << "Loading started";
}

void MainWindow::onPageLoadProgress(int progress)
{
    qDebug() << "Loading in progress: " << progress;
}

void MainWindow::onPageLoadFinished()
{
    qDebug() << "Loading finished";
}

通道是在页面端使用qwebchannel.js创建的

代码语言:javascript
运行
复制
<h1>Page</h1>
<a href="other.html">Other Page</a>

<script type="text/javascript" src="qrc:///qtwebchannel/qwebchannel.js"></script>
<script>

var webChannel = new QWebChannel(qt.webChannelTransport, function(channel){
    window.external = channel.objects.external;
});

</script>

示例的完整代码如下:https://github.com/DanmerZ/QWebChannels-example

视频:https://monosnap.com/file/ZTOgj1QH06VRVF3ogmXln07eOVXXCW

P.S.这个错误仅适用于Qt5.7,我检查了Qt5.6.1,通道工作正常。 https://bugreports.qt.io/browse/QTBUG-52209?jql=text%20~%20%22QWebChannel%20reload%22

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-07-19 10:52:13

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38394130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档