重写的插槽shouldInterruptJavaScript()未被调用

时间:2016-03-01 15:51:32

标签: c++ qt

我想从Qt4.8.6中抑制QtWebkit中的Javascript超时警告。我创建了一个QWebPage的子类(如下所示),并使用setPage将其添加到QWebView。但是,对话框仍然出现。在互联网上搜索我发现了一个例子,看起来像我的代码,人们说它正在起作用(例如reimplement the shouldInterruptJavaScript() in Qt (C++))。我一定是在做傻事。如果我覆盖像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);

1 个答案:

答案 0 :(得分:0)

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

public slots:
bool shouldInterruptJavaScript()

private slots:
bool shouldInterruptJavaScript()

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