如何在 Qt 资源中打包图片以便从静态 HTML 资源访问

     2023-02-16     29

关键词:

【中文标题】如何在 Qt 资源中打包图片以便从静态 HTML 资源访问【英文标题】:How to pack images in Qt resource to be accessible from a static HTML resource 【发布时间】: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 是否支持它。 【参考方案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">
...

【讨论】:

看起来像我正在尝试做的事情。将检查并返回结果 其他选项是从网络加载图像。 (我相信你已经考虑过了。) 不是这样......因为这只是一个简单的桌面应用程序

如何从打包在war文件中的jar文件中加载资源? [复制]

】如何从打包在war文件中的jar文件中加载资源?[复制]【英文标题】:Howtoloadresourcefromjarfilepackagedinawarfile?[duplicate]【发布时间】:2011-06-0221:38:48【问题描述】:我需要从jar中加载一个属性文件。jar包含在war文件中。这是结构ROOT.w... 查看详情

webpack打包vue项目,资源路径如何从绝对路径改为相对路径?css中的图片资源如何修改配置?

资源相对引用路径问题描述一般情况下,通过webpack+vuecli默认打包的css、js等资源,路径都是绝对的。但当部署到带有文件夹的项目中,这种绝对路径就会出现问题,因为把配置的static文件夹当成了根路径,那么要解决这种问题... 查看详情

React Native TypeScript 图片和静态资源

...08-2105:45:09【问题描述】:我一直在关注微软发布的tutorial如何将您的ReactNative项目转换为TypeScript。一切都很好,直到我需要在我的项目中包含图像。显然tsc不会将图像打包到outdir中,所以我的问题是在将React 查看详情

7html中img标签的图片资源处理

...,只需要在html中正常引用图片即可,webpack会找到对应的资源进行打包,并修改html中的引用路径html-withimg-loader用来处理html中的img资源,并且其打包规则与url-loader一样;copy-webpack-plugin是从源拷贝到目标位置,如dist目录,变相实... 查看详情

在 qt 4.5 中,是不是可以在静态链接插件中拥有资源?

】在qt4.5中,是不是可以在静态链接插件中拥有资源?【英文标题】:Inqt4.5,isitpossibletohaveresourcesinastaticallylinkedplugin?在qt4.5中,是否可以在静态链接插件中拥有资源?【发布时间】:2009-07-3015:11:55【问题描述】:我有一个嵌入资... 查看详情

如何从 Qt 中的资源文件中重复/循环声音?

】如何从Qt中的资源文件中重复/循环声音?【英文标题】:Howtorepetitive/loopingSoundfromResourcefileinQt?【发布时间】:2015-01-1016:49:43【问题描述】:有没有什么简单的方法可以在Qt中播放Resource文件中的重复/循环声音?对于单音播放,... 查看详情

如何从 Qt/C++ 的子函数中调用非静态父函数?

】如何从Qt/C++的子函数中调用非静态父函数?【英文标题】:Howtocalltonon-staticparentfunctionfromwithinchildfunctioninQt/C++?【发布时间】:2016-04-2018:10:08【问题描述】:我很难理解如何将父对象传递给子对象。在Qt中,我有一个MainWindow类... 查看详情

vue3:加载本地图片等静态资源(代码片段)

背景在我们用vue2+webpack的时候,加载图片资源是这样用的:<img:src="require('@/assets/test.png')"/>这样打包后就会触发file-loader打包图片资源,在dist文件夹中就可以看到这个图片(如果图片较小... 查看详情

vue打包静态资源路径不正确的解决办法

vue项目完成打包上线的时候会碰到静态资源找不到的问题,常见的有两个1、js,css路径不对解决办法:打开config/index.js,将其中的assetsPublicPath值改为’./’2、css中引用的图片资源找不到我的login.vue文件中有一段css,其中引... 查看详情

github如何托管页面部署静态资源部署vue静态资源的步骤和遇到的问题(代码片段)

1.前提:github能够识别gh-pages分支中的index.html分支只能是gh-pages,gh-pages分支下识别的文件只能是inde.html免费的githubpages服务只能是公开publish项目2.Vue项目打包成dist和传递dist文件到gh-pages分支npmrunbuild------过程不说了。打包... 查看详情

(22/24)webpack实战技巧:静态资源集中输出(代码片段)

工作中会有一些已经存在但在项目中没有引用的图片资源或者其他静态资源(比如设计图、开发文档),这些静态资源有可能是文档,也有可能是一些额外的图片,而在打包时保留这些静态资源,直接打包到指定文件夹中。此时... 查看详情

解决从私库下载下来已经编译好的项目核心部分,改变其编译后的静态资源后无法打包进改变部分的问题

...,核心部分已经是编译后下载下来的,其中包含所有静态资源。          在idea中改变静态资源,添加或者删除或者改变一部分后,在使用maven命令打包或者直接用package插件打包无法将改变后的打包进wa... 查看详情

【从0开始学laya】7-如何使用图集和加载资源

参考技术ALayaAirIDE中的【图集打包工具】会将每个目录打包为一个图集,特效类动画因为每个特效帧数量不多可以将多个特效组合到一张图集资源并存放在一个目录内。通过LayaAirIDE对图集打包后,会生成三个文件分别是.atlas、.js... 查看详情

ARM - 如何从存储帐户获取访问密钥,以便稍后在模板中的 AppSettings 中使用?

】ARM-如何从存储帐户获取访问密钥,以便稍后在模板中的AppSettings中使用?【英文标题】:ARM-HowcanIgettheaccesskeyfromastorageaccounttouseinAppSettingslaterinthetemplate?【发布时间】:2016-01-1811:09:26【问题描述】:我正在创建一个Azure资源管理... 查看详情

静态资源的访问控制

】静态资源的访问控制【英文标题】:Accesscontrolforstaticresources【发布时间】:2012-02-1004:26:10【问题描述】:在我的应用程序中,我有时会生成一张新图片。在阅读cmetshere之后,我决定将图片存储在文件系统中,并将元数据存储... 查看详情

qt如何编译成可执行程序,像vc的静态编译,可以在脱离qt的环境中运行

参考技术Aqt如何编译成可执行程序,像vc的静态编译,可以在脱离qt...开源版本不允许静态编译可以将dll打包,就能再其他的机器上运行了.榵彨廀峓朢桸潂椺壱检挰洏煠愝噐 查看详情

vue项目打包后资源相对引用路径的和背景图片路径问题(代码片段)

vue项目中若要使用相对路径来获得相应静态资源,在一般项目build之后都会生成一个index.htm文件和一个static文件夹,而static这个文件夹需要被放置在根目录下,1.需要找到config---index.js(webpack是依据index.js来自动生成文件的)//修改相对... 查看详情

webpack配置

...ver.host]:[devServer.port]/webpack-dev-server查看devServer提供的所有资源列表。通过http://[devServer.host]:[devServer.port]/[output.publicPath]/资源名称来访问对应的资源。如果提供了devMiddleware.publicPath,则通过http://[devServer.host]:[devServer.port]/[devMiddlewa... 查看详情