被覆盖的插槽应该不被调用中断JavaScript()

Overridden slot shouldInterruptJavaScript() not being called

本文关键字:中断 JavaScript 调用 覆盖 插槽      更新时间:2023-10-16

我想从Qt4.8.6中禁止在QtWebkit中禁止Javascript超时警告。我创建了 QWebPage 的一个子类(如下所示),并使用 setPage 将其添加到 QWebView 中。但是,对话框仍然出现。在互联网上搜索,我发现了看起来像我的代码的例子,人们说它正在工作(例如,在Qt(C++)中重新实现shouldInterruptJavaScript())。我一定在做傻事。如果我覆盖像javascriptConsoleMessage这样的函数,它被称为OK。

我的班级:

class NoDialogWebPage : public QWebPage
{
    Q_OBJECT
public:
    NoDialogWebPage(QObject * parent = 0) : QWebPage(parent) {}
public slots:
    bool shouldInterruptJavaScript()
    {
        return false;
    }
};

如何从 QWebView 的容器中调用它:

m_pWebView = new QWebView(this);
m_pWebPage = new NoDialogWebPage(m_pWebView);
m_pWebView->setPage(m_pWebPage);

Qt需要它是一个私人插槽,而不是一个公共插槽。 只需更改

public slots:
bool shouldInterruptJavaScript()

private slots:
bool shouldInterruptJavaScript()

我刚刚用Qt 4.8.4对此进行了测试,它就像一个魅力。