2016-03-01 55 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測試這和它的作品就像一個魅力。