2016-03-01 46 views
1

我想从Qt4.8.6中抑制QtWebkit中的Javascript超时警告。我创建了QWebPage的子类(如下所示),并使用setPage将其添加到QWebView。但是,对话框仍然出现。在互联网上搜索我发现的例子看起来像我的代码,人们说是在工作(例如reimplement the shouldInterruptJavaScript() in Qt (C++))。我一定在做一些愚蠢的事情。如果我重写一个像javascriptConsoleMessage 这样的函数,那么被称为OK。被覆盖的插槽shouldInterruptJavaScript()没有被调用

我的类:

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); 

回答

0

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

public slots: 
bool shouldInterruptJavaScript() 

private slots: 
bool shouldInterruptJavaScript() 

我只使用Qt 4.8.4测试这和它的作品就像一个魅力。