在Linux环境下中望CAD二次开发经典菜单

一、环境

系统 环境:麒麟V10 SP1 虚拟机系统 + 中望CAD2023/2024.

编程环境:QTCreate 5.12.8库

二、代码

加入头文件

#include "ZwRibbonRoot.h"
#include "RibbonRoot.h"
#include "PopMenuRoot.h"
#include "arxHeaders.h"
#include "OpCommon.h"
#include <QFile>
#include <QDomDocument>
#include <QDomElement>
#include <qstring.h>

加入命令反应类

//命令接口类
class CClassicsMenuCommand :public ICommand
{
public:
    CClassicsMenuCommand()
    {

    }

    ~CClassicsMenuCommand()
    {

    }

    virtual bool CanExecute()
    {
        return true;
    }

    //命令执行函数
    virtual void Execute(CuiObject* obj)
    {
        PopMenuItem *item = dynamic_cast<PopMenuItem*>(obj);
        if (item)
        {
            QString strCmd = item->getUID() + " ";
            wchar_t strCmdW[1024] = { 0 };
            strCmd.toWCharArray(strCmdW);
            AcApDocument* pDoc = acDocManager->curDocument();
            acDocManager->sendStringToExecute(pDoc,strCmdW,true,false,false);
            return;
        }
    }
};

添加菜单代码

    //获取菜单表
    CClassicsMenuCommand *handler = new CClassicsMenuCommand();
    ZwMenuControl *pMenuCtrl = ZwMenuControl::GetMenuControl();
    if (!pMenuCtrl)
    {
        return;
    }

    //添加主菜单项目
    PopMenu *pMenuMain = new PopMenu(NULL);
    pMenuMain->setId("MAIN-1");
    pMenuMain->init();
    pMenuMain->setText("主菜单");
    pMenuCtrl->AddMenu(pMenuMain);


    //加入大项-1
    {
        PopMenu *pMenuBig = new PopMenu(NULL);
        pMenuBig->init();
        pMenuBig->setId("BIGMENU-0");
        pMenuBig->setText("菜单大项-0");
        pMenuBig->setImagePath(":/ZWCADRes/ZWCAD/IDR_MAINFRAME");
        pMenuMain->addItem(pMenuBig);

        {//子项
            PopMenuItem *item0 = new PopMenuItem(NULL);
            item0->setUserCmd(handler);
            item0->setImagePath(":/ZWCADRes/ZWCAD/IDR_MAINFRAME");
            item0->init();
            item0->setId("SMALL-0");
            item0->setUID("测试命令0");
            item0->setText("子菜单0");
            pMenuBig->addItem(item0);

            //分隔符
            PopMenuItem *itemSp = new PopMenuItem(NULL);
            itemSp->init();
            itemSp->setIsSeparator(true);
            pMenuBig->addItem(itemSp);

            PopMenuItem *item1 = new PopMenuItem(NULL);
            item1->setUserCmd(handler);
            item1->setImagePath(":/ZWCADRes/ZWCAD/IDR_MAINFRAME");
            item1->init();
            item1->setId("SMALL-1");
            item1->setUID("测试命令1");
            item1->setText("子菜单1");
            pMenuBig->addItem(item1);
        }
    }

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

码农709

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

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

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

打赏作者

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

抵扣说明:

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

余额充值