2012-03-15 45 views
9

我懷疑這是如此基本,以至於沒有人打擾記錄它。如何在QWebview中顯示本地HTML?

我想從我的程序中編寫一個HTML文件,然後將該文件加載到QWebview對象中。

當我打開QtCreator時,我可以導航到右側URL塊中的文件,並顯示在QtCreator中。當我編譯並運行程序時,窗口是白色的並且是空白的。

我也不希望目錄硬編碼,我希望它使用當前目錄。

所以我想有兩個問題:

  1. 我怎樣寫???在下面獲取名爲「reportView」的QWebview對象來顯示我的本地文件?

ui->reportView->load(QUrl("???")); 

  • 爲什麼QWebview對象保持空白?我懷疑連接到谷歌文檔的一個問題,因爲我得到這個錯誤:

  • QSslSocket: cannot call unresolved function SSLv23_client_method 
    QSslSocket: cannot call unresolved function SSL_CTX_new 
    QSslSocket: cannot call unresolved function SSL_library_init 
    QSslSocket: cannot call unresolved function ERR_get_error 
    

    謝謝。

    回答

    9

    您可以使用QUrl::fromLocalFile這將從絕對文件路徑構造一個像這樣的URL這樣的網址"file:///path/to/file.html"

    Google使用SSL,如果你在Windows上,你需要手動安裝OpenSSL並將它的DLL複製到Windows系統目錄,Qt安裝的bin目錄或最終的可執行文件夾中。

    其他平臺應該已經安裝了OpenSSL或安裝了一個軟件包管理器。

    +0

    如果我靜態構建它,它會自動包含這些DLL分發還是我需要更改.pro文件中的某些內容來設置它? – RuQu 2012-03-15 03:24:46

    +0

    你必須使用「-openssl-linked」選項運行Qt的「configure」並重新編譯Qt(或者只是QtNetwork模塊)。 – alexisdm 2012-03-15 16:12:23

    18

    從網絡

    webView->load(QUrl("http://google.de")); 
    

    從資源

    webView->load(QUrl("qrc:///sample.html")); 
    

    從文件系統

    webView->load(QUrl("file:///C:/sample.htm")); 
    

    無需QUrl::FromLocalFile,不需要webView->show()

    你們都歡迎!