访问量: 87 次浏览
QGIS 4.0是自 2018 年 QGIS 3.0发布以来的一次主版本更新。最开始的计划是于 2025 年 10 月正式发布,在经历了几次跳票后,QGIS 4.0「Norrköping」最终2026 年 3 月 6 日正式发布。注意下图,标识有“early adopter”。

QGIS 4.0 最大变化就是将UI框架从 Qt5 升级为 Qt6,以应对Qt5商业条款的约束。在QGIS 3.x的较近版本中,已经有同时使用Qt5与Qt6的测试版本发布。这次的升级,从某种程度上是全面迁移至Qt6的一个重要进展。
与上一次大版本升级(从2.0升级到3.0)相比,这次的升级要平滑地多。从安装使用的情况下来,QGIS 3.x 到QGIS 4.0的升级相对来讲对用户变化并不是特别大。QGIS 4.0在性能、安全性等方面做了大量内部改进。
注意:不建议在实际工作中安装使用QGIS 4.0,目前版本适合测试与试用。短期内 QGIS 3.44 仍为 LTR 版本,针对QGIS 4的LTR版本计划在 2026 年 10 月发布。 !!!!使用QGIS 4.0的话强烈建议备份数据。工程文件使用新版本打开保存后不一定在QGIS 3.x中能够打开。
QGIS可以通过官方网站进行下载,链接为 https://qgis.org/download/ 。
下图为Windows桌面版的下载页面,除了在线安装包,同时有3.44 LTR与4.0版本的链接提供。

为了方便使用,提供了针对Windows版本的百度网盘下载方式, 链接: https://pan.baidu.com/s/1TCGLu5p4QD9sVHgvW4_EyQ?pwd=3dix 提取码: 3dix
Linux的发行版本众多,安装使用注意多参考安装说明。其它操作系统未进行实际安装,可对照官网说明进行操作。
首先在Window桌面系统进行安装使用。下图为使用QGIS 4.0打开的原来的一个项目文件,可以看到界面与QGIS 3.4几乎没有差别:

对于脚本程序的使用,在Debian 13中参照官方说明进行了安装,使用原来的一个简单测试脚本程序进行测试。从使用的情况来看,需要注意QGIS安装路径的设置,以及对于QT5到Qt6的变更。 在Python中调用QGIS 4的功能,需要声明QGIS的安装位置,在Python中按如下方式,不然会无法引入 qgis 包。这个应该是针对在命令行中运行脚本的设置,直接QGIS中使用Python脚本功能应该不需要,未经过实际测试。
import sys
sys.path.append('/usr/share/qgis/python/')
sys.path.append('/usr/share/qgis/python/plugins')
from qgis.core import *
对于使用的Qt5的代码,相应修改为Qt6。后面的代码根据情况进行修改。对于这个简单的示例,实际上涉及 qgis 的并没有修改,反而是针对 Qt6 的修改了一处。
完整的代码如下:
import sys
sys.path.append('/usr/share/qgis/python/')
sys.path.append('/usr/share/qgis/python/plugins')
from qgis.core import *
from qgis.gui import *
from qgis.utils import *
from PyQt6.QtCore import *
from PyQt6.QtGui import *
from qgis.core import Qgis
app = QgsApplication([], True)
app.setPrefixPath("/usr", True)
app.initQgis()
canvas = QgsMapCanvas()
canvas.setWindowTitle("PyQGIS Standalone Application Example")
# canvas.setCanvasColor(Qt.White)
layer = QgsVectorLayer('LineString?crs=epsg:4326', 'MyLine' , "memory")
pr = layer.dataProvider()
linstr = QgsFeature()
geom = QgsGeometry.fromWkt("LINESTRING (1 1, 10 15, 40 35)")
linstr.setGeometry(geom)
pr.addFeatures([linstr])
layer.updateExtents()
QgsProject.instance().addMapLayer(layer)
canvas.setExtent(layer.extent())
canvas.setLayers([layer])
canvas.zoomToFullExtent()
canvas.freeze(True)
canvas.show()
canvas.refresh()
canvas.freeze(False)
canvas.repaint()
exitcode = app.exec()
QgsApplication.exitQgis()
QGIS 4.0是大版本升级,带来性能提升、安全性增强、对新底层技术库的支持、可维护性提高等各方面的好处。本次更新的核心在于底层技术栈的迭代,以彻底解决 Qt5 停止公共支持后的维护风险。为了保障生态平稳过渡,官方采取了分阶段策略:原 3.4x LTR 版本将延长支持,而 QGIS 4.0 在使用完全Qt6 环境的同时,通过保留弃用 API 的方式最大限度降低插件开发者的适配成本。
官网提供迁移指南,并针对Python开发提供的 pyqgis4-checker (https://github.com/qgis/pyqgis4-checker) 兼容性检查工具。
具体的功能更新有上百项,可以阅读更新日志进行了解:https://changelog.qgis.org/en/version/4.0/