【问题标题】:How to pack images in Qt resource to be accessible from a static HTML resource如何在 Qt 资源中打包图片以便从静态 HTML 资源访问
【发布时间】:2016-12-08 09:09:52
【问题描述】:

我有一个使用 QWebEngineView 来显示静态 HTML 页面的 Qt Widgets 项目。该页面将显示需要与 Qt 可执行文件/安装程序“打包”的图像。我可以使用 QRC 文件添加图像并从 HTML 文件中引用它吗?

我(可悲地)尝试使用“qrc:/image...”表示法访问图像,但我完全理解 QWebEngineView 显示的嵌入式浏览器与项目资源无关。另一种方法?

【问题讨论】:

  • 不完全明白你想要什么,但你能把图像加载到临时文件中并在 HTML 中将它作为一个源吗?
  • 也可能是一个很好的解决方案。只有在这种情况下,我需要将 html + 图片部署到某个临时位置。喜欢 lesyk 的回答
  • 您可以使用QTemporaryFileQTemporaryDirQDesktopServices::TempLocation 作为临时位置生成实用程序。另一种方法是使用 Base64 编码将图像嵌入到 HTML 中,但它会使您的 HTML 变大,我不确定 QWebEngineView 是否支持它。

标签: qt qt5 qt-resource


【解决方案1】:

对于 main.cpp 中的 Qt 5.6:

...
QString helpHTMLFile = QStandardPaths::writableLocation(QStandardPaths::TempLocation);
helpHTMLFile.append(QDir::separator());
helpHTMLFile.append("index.html");
QFile(helpHTMLFile).remove();
QFile(":/index.html").copy(helpHTMLFile);

QQmlApplicationEngine engine;
engine.rootContext()->setContextProperty("pathToFile", "file:///"+helpHTMLFile);

QString logo = QStandardPaths::writableLocation(QStandardPaths::TempLocation);
logo.append(QDir::separator());
logo.append("logo.svg");
QFile(logo).remove();
QFile(":/logo.svg").copy(logo);
...

在html中:

...
<img src="logo.svg" class="loginFooterImg">
...

【讨论】:

  • 看起来像我正在尝试做的事情。将检查并返回结果
  • 其他选项是从网络加载图像。 (我相信你已经考虑过了。)
  • 不是这样......因为这只是一个简单的桌面应用程序
猜你喜欢
  • 1970-01-01
  • 2012-11-30
  • 2014-11-20
  • 2013-08-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-05
  • 1970-01-01
  • 2022-12-04
相关资源
最近更新 更多