如何让QWebKit显示图像?

Nat*_*man 7 qt image qwebkit

好的,我在与文件相同的目录中有一个Qt可执行文件logo.png.

我打电话给以下人:

QString msg("<html><body><img src='logo.png' /></body></html>");

webView->setHtml(msg);
Run Code Online (Sandbox Code Playgroud)

这里webviewQWebKit指针

但是,当我执行程序时,图像不会显示.我正在从图像所在的目录执行程序... 为什么不显示?这让我疯了!

bay*_*ith 10

如果未给出适当的baseUrl,则可能无法正确解析logo.png.

这是一个例子.请注意,必须从包含logo.png的目录运行应用程序,但dummy.html不需要存在.它仅用于提供适当的baseUrl.

#include <QtCore>
#include <QtGui>
#include <QtWebKit>

int main(int argc, char * argv[])
{
    QApplication app(argc, argv);

    QUrl baseUrl = QUrl::fromLocalFile(QDir::current().absoluteFilePath("dummy.html"));

    QString msg("<html><body><img src='logo.png' /></body></html>");

    QWebView *webView = new QWebView;
    webView->setHtml(msg, baseUrl);

    webView->show();

    return app.exec();
}
Run Code Online (Sandbox Code Playgroud)


mos*_*osg 1

  1. 检查 Qt 构建是否支持png。您也可以尝试其他图像格式。
  2. 尝试使用绝对路径。对我来说,这个变体有效:

示例代码:

if (isPictureDirExists)
    text.replace(QString("src=\""), QString("src=\"%1/img/")
        .arg(conf.absImgFolder), Qt::CaseInsensitive);

QString html = QString("<html><head><meta Content=\"Text/html; " \
                       "CHARSET=Windows-1251\"></head><body>%1</body>" \
                       "</html>").arg(text);
webView->setHtml(html);
Run Code Online (Sandbox Code Playgroud)

祝你好运。

补充:我尝试从我的大型项目中使用 QWebkit 编写代码,这就是我所得到的。项目文件名为 Images.rar。它与 MS Visual C++ 相结合。我使用 Qt 4.6.2 成功地从该存档构建了代码。

您也可以从标准 Qt 示例文件夹中查看预览器应用程序。在我的主机上,路径是:

C:\Qt\4.6.2\examples\webkit\previewer 
Run Code Online (Sandbox Code Playgroud)

希望有帮助!