QGIS3.18.3+QT 5.11.2+VS2019二次开发(1)添加菜单栏

QGIS3.18.3+QT 5.11.2+VS2019二次开发(1)添加菜单栏


前言

QGIS二次开发相关教程十分的少,网上大部分教程还是针对QGIS 2.x 版本的,如今QGIS早已全面进入QGIS 3.x版本 本文记录自己学习QGIS3二次开发的路程,希望和大家一起交流学习,共同进步。按照上文应该可以成功配置并测试了QGIS二次开发环境,这一节从头开始讲解QGIS界面菜单栏的设置

提示:以下是本篇文章正文内容,下面案例可供参考

一、QGIS 3 的图形界面和菜单栏

图中的黄标1就是菜单栏
在这里插入图片描述

二、GGIS 3 + QT Widgets Application项目

1.创建项目

按照上文创建QT Widgets Application项目,并且拷贝好相关动态库(.dll),项目包含文件如下图:
项目主要文件
gisTest2是项目名,如果你的项目名不同,文件名随之修改,主要的四个文件包括:

  • ui设计文件(QT Creator or QT Designer)-------gisTest2.ui
  • 项目头文件(定义窗口类和成员)------------------ gisTest2.h
  • 项目实现文件(初始化或者实现头文件定义的成员)----gisTest2.cpp
  • main函数(使用定义的项目类创建窗口)--------- main.cpp

2.gisTest2.h

将里面的代码替换为如下代码:

#include <QtWidgets/QMainWindow>    //创建项目时自动引入
#include "ui_gisTest2.h"            //创建项目时自动引入

//自己引入的库
#include <qmenu.h>                  //QT菜单类
#include <qaction.h>                //QT行为类


class gisTest2 : public QMainWindow       //继承至QMainWindow的窗口类gisTest2
{
    Q_OBJECT                              //QT对象宏定义

public:
    gisTest2(QWidget* parent = Q_NULLPTR);        //构造函数声明
    
private:
    // create the menus and then add the actions to them.
    QMenu* fileMenu;                         //定义文件菜单
    QAction* openFileAction;                 //定义打开文件菜单行为

public slots:                                //槽函数,用于gisTest2.cpp中的connect函数
    void on_openFileAction_triggered();      //打开文件菜单行为会触发的结果 声明
};

3.gisTest2.cpp

将里面的代码替换为如下代码:

#include "gisTest2.h"                      //gisTest2头文件,创建项目时自动引入

//自己引入的库
#include <qmenubar.h>                      //QT菜单栏库,用来存放菜单
#include <qfiledialog.h>

gisTest2::gisTest2(QWidget* parent)       //构造函数实现
    : QMainWindow(parent)
{
    this->resize(600, 400);               //设置gisTest2类窗口大小

    // 菜单栏
    fileMenu = this->menuBar()->addMenu("File");    //菜单栏添加文件菜单
    openFileAction = new QAction("Open", this);     //设置文件菜单栏下二级菜单Open菜单
    this->connect(openFileAction, SIGNAL(triggered(bool)), this,
    SLOT(on_openFileAction_triggered()));           //关联Open和槽函数(点击产生结果)
    fileMenu->addAction(openFileAction);            //一级菜单文件添加二级菜单Open
}

void gisTest2::on_openFileAction_triggered() {
    //尚未定义触发结果,点击Open,什么也不发生
}

3.main.cpp

将里面的代码替换为如下代码:

#include "gisTest2.h"                  //gisTest2头文件,创建项目时自动引入
//自己引入的类
#include <qgsapplication.h>            //QGIS应用类

int main(int argc, char* argv[])
{
    QgsApplication a(argc, argv, true); //创建一个QGIS应用
    //设置qgis应用的路径
    QgsApplication::setPrefixPath("D:\QGIS-3.18.3\apps\qgis", true);
    QgsApplication::initQgis();  //初始化QGIS应用
    gisTest2 w;  //利用我们写好的gisTest2窗口类创建一个窗体,类似于Qt
    w.show();    //显示我们创建的窗体

    return a.exec();
}

总结

以上就是今天要讲的内容,结果如下图,本文仅仅简单介绍了菜单栏的创建,下文将讲解:添加画布和矢量栅格图层。
在这里插入图片描述

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学海一叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值