关于如何从源码编译QGIS,请参见《Win10下通过源码编译安装QGIS》。源码编译出可执行文件后,启动会遇到各种问题,问题汇总参见《QGIS从源码启动遇到的问题汇总》。本文讲解QGIS.exe图标不显示问题。相信很多同学在Windows下编译时都遇到过这个问题,症状看下图。

qgis里看不到postgresql的表_源码编译

可以看到,其实并不是所有图标都不显示的,有一部分能够显示,说明并不是图标文件有问题,也不应该是缺少了一部分图标文件。实际上,肯定有同学还用Qt Designer打开过名为“qgisapp.ui”的文件,但是却可以明显看到图标显示正常,如下图。

qgis里看不到postgresql的表_QGIS.exe图标不显示问题_02

这说明,图标文件齐全、路径正确。但为什么运行程序时有些图标不显示呢?仔细观察会发现,这些不显示的图标都是“svg”格式的,例如下图当中所列的图标,都是被QGis用到,但程序运行时不显示的,而别的“png”格式的图片则显示正常。

qgis里看不到postgresql的表_源码编译_03

这种格式的图标文件在QGis程序里面用到的很多,因此不要去把所有的”svg”文件转换成”png”格式,太多了,另外,png图片在放大时,会有很明显的锯齿,而svg则不会。

事实上,这个是Qt的问题,不是QGis的问题,并不是Qt不支持”svg”的图片(Qt Designer能够显示就说明是支持的),而是运行的时候程序找不到正确支持图标格式的库文件。在这里,这个文件是”qsvg.dll”,这个文件在OSGeo4W\apps\Qt5\plugins\imageformats目录,其是安装QGIS相关库的目录,该目录的说明参见 《Win10下通过源码编译安装QGIS》博文。如下图所示。

qgis里看不到postgresql的表_库文件_04


OK,讲到这里,解决方案就很明显了。将这个“qsvg.dll”拷贝到与”qgis.exe”路径下就可以了。由于QGis版本和Qt版本的问题,有些同学可能将库文件拷过去还是不行,是因为程序没找到“imageformats”这个文件夹。这个时候,只需要将”imageformats”这个文件夹全部拷贝到”qgis.exe”路径同一目录就可以了。如下图

qgis里看不到postgresql的表_Qt_05

  或者把你本机Qt所在路径的”plugins/imageformats”文件夹全部拷贝到”qgis.exe”路径同一目录也可以,最后图标就可以全部正常显示了。

qgis里看不到postgresql的表_库文件_06

顺便提一下,在做QGis二次开发的时候,如果用到QGis的这些图标,也会出现上述的问题,解决方法是一样的,拷贝库文件夹到程序的 exe 文件路径下,就可以了。