javaScriptWindowObjectCleared信号不会在qwebview中加载html页面时被调用



我是QT的新手,我一直试图看到javascript和QT类之间的桥梁。

我做了什么:

1)我有一个按钮和连接点击信号到on_pushButton_clicked,我也有qwebview实例。

在on_pushButton_clicked:

QUrl url = QUrl::fromLocalFile("C:\whoami\sd\index.html");

  QObject::connect(ui->webView->page()->mainFrame(), SIGNAL(javaScriptWindowObjectCleared()),
                     this, SLOT(addJSObject()));
  ui->webView->page()->mainFrame()->load(QUrl(url));
....

和addJSObject中

void MainWindow::addJSObject()
{
    qDebug () <<"Inside addJSObject";
    ui->webView->page()->mainFrame()->addToJavaScriptWindowObject(QString("mBridge"), m_bridge);
    qDebug () <<"Nooo. I m not invoked..";
}

问题:

编译没有错误,html文件显示在qwebview中,但是没有调用addJSObject回调。

有人能帮我解决这个问题吗?我一定是犯了什么愚蠢的错误。(。

确保你的MainWindow: 1)继承QObject 2)有Q_OBJECT宏3)有一个插槽addJSObject()

例如mainwindow.h:

class MainWindow : public QObject
{
  Q_OBJECT
public:
  MainWindow();
private slots:
  void addJSObject();
};

如果这是正确的,您应该能够连接到addJSObject(),而不需要静态QObject::connect()。当引用这个作为信号目标对象时,只需使用connect()。

一种方法来检查,你的信号工作是尝试使用QTimer超时信号:

QTimer::singleShot(5000, this, SLOT(addJSObject()));

相关内容

  • 没有找到相关文章

最新更新