我在tabwidget上有一些按钮。这些按钮需要在它们上面有一些图标。
我知道QPixmap允许我将图像放在按钮上,但我看到这些构造函数将文件路径作为参数。我想在构建之后避免在文件中拖动图标。我想以某种方式将这些图标嵌入可执行程序中,以便减少我需要随身携带的行李以使其工作。
我该如何做到这一点?
我有兴趣听听如何实现我的目标,即不需要使用可执行文件拖动图标文件;如果你对我可能使用的一些术语感到困惑,请关注这方面,因为我还在学习Qt。
答案 0 :(得分:12)
当然,您可以将图标,图像和所有其他自定义资源嵌入到您的应用程序中。 请阅读The Qt 4's Resource System(或click here获取Qt 5)
答案 1 :(得分:4)
您将拥有一个名为ProjectName.qrc的资源文件,这些文件会列出图标(通常是PNG)。使用Qt Creator,它已经开始为您提供一个空白的QRC文件。指定“文件”时,请以“:/ images/MyCrazyIcon.png”的方式使用语法,并从嵌入到可执行文件中的资源加载图标。请注意,Qt不会以最完美的方式管理资源,这是根据需要加载它们但不总是占用系统内存;他们总是占用系统内存,如果它们很小的话,这真的不是什么大问题。对于您想要稍后刷新的大图形,只需指定一个真实的文件名(例如,“MyBigFile.png”而不是“:/ MyBigFile.png”,后者指向可执行文件中的资源)。
使用资源语法,权力在冒号字符“:”中,因此您甚至可以拥有“:MyFile.png”,前提是QRC文件与资源位于同一目录中。这就是我这样做的方式,到目前为止看不出这种语法的缺点。我讨厌在语法中包含“... / Images / ...”,所以我的资源名称用“:MyPic.png”来解决,没有更长的“:/Images/MyPic.png”,一切正常。
Qt文档指出,在这个时候,他们不支持Windows和Mac支持的真正资源处理,但事情可能会在未来发生变化。请记住,“真正的资源支持”是指您可以在可执行文件中放置多兆字节图形和声音的好东西,并且永远不要担心它们会在您请求它们的神奇时间之前加载到内存中。加载可执行文件时,QRC资源将加载到内存中。可加载文件支持的外观可以弥补这个弱点。 Qt正在迅速改进,有一天他们可以很好地支持Windows和Mac资源系统。我越来越多,必须去。塔塔每个人都对我进行了调整,我需要点数。