2012-03-15 55 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()

    你们都欢迎!