2016-08-16 33 views
0

在QWebKit我有這樣的代碼:如何在QWebEngine中顯示下載進度?

QWebFrame * MainWindow::getQWebFrame(QString name) { 
    if (getView() && getView()->page() && getView()->page()->mainFrame()) { 
     QWebFrame * frameImLookingFor = getView()->page()->mainFrame(); 
      if (frameImLookingFor->frameName() == name) 
       return frameImLookingFor; 
     foreach(QWebFrame * frame, getView()->page()->mainFrame()->childFrames()) 
     { 
      frameImLookingFor = frame; at all 
      if (frame->frameName() == name) 
      { 
       frameImLookingFor = frame; 
       return frame; 
      } 
     } 
     return frameImLookingFor; 
    } 
    return NULL; 
} 

這是怎麼看起來像QWebEngine:

QWebEnginePage * MainWindow::getQWebFrame(QString name) { 
    if (getView()) { 
     QWebEnginePage *frameImLookingFor = getView()->page(); 
     if (frameImLookingFor->objectName() == name) 
      return frameImLookingFor; 
     foreach(const QWebEnginePage * frame, getView()->page()) 
     { 
      frameImLookingFor = frame; 
      if (frame->objectName() == name) 
      { 
       frameImLookingFor = frame; 
       return frame; 
      } 
     } 
     return frameImLookingFor; 
    } 
     return NULL; 
} 

可悲的是它不工作。它顯示了foreach的許多錯誤。例如「'我':不是'QForeachContainer」的成員。無論如何要重寫這段代碼,所以它會像以前那樣工作?

+0

這個問題有什麼與顯示任何進展?你只是在枚舉幀... –

+0

好吧,在QWebKit這一個是負責顯示進度= \當我把所有的評論,它什麼也沒有顯示,但正在下載 –

回答

0

QWebEngine不允許您從C++迭代子幀。如果你想迭代它們,你必須運行一些JavaScript。

無論如何你需要這些子幀?

+0

之前它是這樣工作:如果沒有文件電腦,它顯示紅色的按鈕。當你按下它時,它變成黃色(下載即將開始),然後顯示以%下載的進度。下載完成後,按鈕變成綠色。現在它只是變成黃色,並且當下載完成時,您必須重新加載頁面才能使按鈕變綠 –

+0

因此,頁面本身具有一些用於監視下載進度的JavaScript? –

+0

是的。 JS監視器下載進度,但QT以這種方式顯示 –