QGIS作为优秀的开源免费地图工具软件,提供了非常多便捷的插件。如何开发自己的QGIS插件呢?通常采用两种方式,一种是基于Python开发,另一种是基于C++开发。
由于Python具有很便捷的跨平台特性,所以QGIS官网也是推荐大家使用Python来开发插件。点击这里,查看开发Python插件官方文档。后续,我们也会提供Python插件的开发说明。敬请期待!
本文选择C++,开发QGIS插件。正文开始!
环境准备
下载OSGeo4W安装包,选择安装qgis-dev或qgis-ltr-dev都是可以的。
请注意你下载的QGIS使用的VS版本。你需要安装一个与该版本一致的VS。
创建工程
使用QtCreator(使用VS+qtaddin的方式也是一样),构建一个Qt DLL工程。
插件代码
构建一个QgisPlugin接口的实现类。主要需要实现的方法如下所示。
class MyFirstQGISPlugin : public QObject, public QgisPlugin
{
Q_OBJECT
public:
/// @brief Constructor.
/// @param qgis_if The Qgis interface.
explicit MyFirstQGISPlugin(QgisInterface* qgis_if);
/// @brief Destructor
virtual ~MyFirstQGISPlugin() = default;
/// @brief Called when the plugin is loaded.
virtual void initGui() override;
/// @brief Called when the plugin is unloaded.
virtual void unload() override;
public slots:
/// An example of an action, triggered when a menu is clicked.
void menu_button_action();
private:
QgisInterface* m_qgis_if;
};
在Qt工程的pro文件中,加入QGIS相关依赖。
请根据自己代码与QGIS目录的相对位置,修改QGIS_DEV_DIR变量。
QGIS_DEV_DIR=../../apps/qgis-ltr
# Install "qgis-dev" to find these libs and includes.
LIBS += -L$${QGIS_DEV_DIR}/lib -lqgis_core -lqgis_gui
INCLUDEPATH += $$QGIS_DEV_DIR/include
# Set building destination.
DESTDIR = $$QGIS_DEV_DIR/plugins
部署
在默认配置下,QGIS的插件只要放在QGIS主目录的plugins子目录中即可。通常以provider_
和plugin_
开头。编译完成后,请查看plugins目录。启动QGIS主程序,插件装载情况,会在消息栏中出现。
需要更多QGIS使用帮助或解决开发问题,欢迎留言或联系我们。转载请注明出处!