我想讓QWebView看起來擴大到寬度和高度,所以理想情況下它沒有滾動條。有些網站可能有固定的寬度,但是我不關心這些。如何創建適當大小的QWebView?
QSize QWebView::sizeHint() const
{
return QSize(800, 600); // ####...
}
這是在多個層面上不正確的:在任何情況下,我想是因爲QWebView實現sizeHint如下我不能這樣做。它根本不考慮實際網頁的大小。 2.它沒有考慮到高度和寬度是相互關聯的。 (爲了證明#2想想網頁中的文本換到下一行。)
作爲一個簡單的解決我這樣做(其中QResizingWebView擴展QWebView):
QSize QResizingWebView::sizeHint() const{
return this->page()->mainFrame()->contentsSize();
}
雖然這是更接近結果,它也有2個缺陷。 1.它沒有考慮顯示的寬度/高度之間的關係。 2. this->page()->mainFrame()->contentsSize()
從我的初步測試中可以看出來不準確(在許多情況下,它已經返回比它應該大的高度,儘管這可能與#1有關)。
有沒有人有任何提示來解決這個問題?
我不知道爲什麼這對他有效,它真的不應該有。 (它不適合我,我嘗試了很多次) – chacham15
也許我不明白。如果我使用QWidget作爲主窗口並在水平佈局中放置QWebView,則QWebView將展開以填充主窗口,並且僅當網頁內容強制大於當前窗口的大小時才顯示滾動條。 –
是的,HBoxLayout詢問QWidget的大小是多少。 sizeHint是回答這個問題的答案。 sizeHint表示,無論實際內容的大小如何,它都希望爲800x600。因此,QHBoxLayout將擴大到800x600以適應尺寸提示大小。然後,當實際渲染完成後,結果顯示內容遠大於提及的尺寸。因此,即使sizePolicy聲稱要展開,也會插入滾動條。 – chacham15