2015-08-08 53 views
1

我目前正在構建一個使用QML WebViewimport QtWebKit 3.0)的應用程序。用戶需要經常調整WebView的大小(我正在使用QML SplitView),但是這會導致UI在應用程序窗口調整大小時極度滯後。有什麼辦法可以防止這種情況發生?如何禁用QML WebView中的呈現?

+0

您可能需要對其進行配置並查看所花費的時間。 –

+0

@KubaOber我做到了這一點,幀速下降,正好發生在觸發其updateLayout()和moveHandle()函數時調整SplitView大小(更改WebView寬度)時。 – daljit97

回答

2

而不是更改widthheight屬性更改scaleWebView的屬性。

  • 調整大小初始值保存初始值widthheight
  • 在調整大小不改變widthheight。改爲在調整大小開始時將scale設置爲newWidth除以寬度。
  • 調整大小時結束設置的widthheight新值,這些屬性和設置scale爲1

編輯: 既然你沒有的widthheight性質的控制,你可以用Rectangle替換爲WebView顏色設置爲"transparent"。然後你可以把WebView放在Rectangle上,看和heightRectangle是如何變化的。

現在兩件事。

如果您不知道調整大小何時開始,何時結束使用Timer,間隔時間例如100ms。重新啓動Timer並更新scale每次widthheightRectangle更改。當Timer被觸發設置爲真實widthheight

如果Rectangle的widthheight的比率不是恆定的,則使用QML對象Scale。有了它,你可以獨立地更改xScaleyScale

+0

這是一個好主意。然而,因爲我說我使用SplitView,我沒有控制高度和寬度屬性。 – daljit97

+0

@ daljit97我認爲可以改變'scale'或使用'Scale'對象。有關更多信息,請參閱我編輯的答案如果您仍然不滿意,請提供您希望無延遲工作的簡單代碼示例。 –

+0

我遵循你的方法,它可以工作,但是縮放時WebView變得不可見。然而之前好多了,謝謝。 – daljit97