在qcad
程式安裝目錄下的scripts
資料夾下新建對應的資料夾和檔案,資料夾、檔名以及類名三者保持一致。這種方式可以避免編譯,暴露**方便編輯修改。
scripts/mytool/mytool.js
mytool.js
:實現乙個mytool
選單,在主程式命令列視窗中輸出hello world
。要實現選單功能,可以直接繼承eaction
這個類。
include
("scripts/eaction.js");
/** 建構函式
*/function
mytool
(guiaction)
/** 繼承eaction
*/mytool.prototype =
neweaction()
;/** 觸發選單執行的操作
*/mytool.prototype.
beginevent
=function()
;/** 選單初始化操作
*/mytool.
init
=function
(basepath)
;
將js
**作為動態鏈結庫的資源,編譯到動態鏈結庫中。這種方式避免了暴露js
**,修改js
**後,需要重新編譯外掛程式動態鏈結庫。
工程配置.pro
config += plugin
target = example
include(../../../shared.pri)
template = lib
headers = rexampleplugin.h
sources = rexampleplugin.cpp
destdir = $$pwd/../../../plugins
libs += -lqcadcore -lqcadgui -lqcadecmaapi
resources = scripts.qrc
原始碼檔案
繼承外掛程式rplugininte***ce
介面即可,一般預設即可。
rexampleplugin.h
#include
#include
#include
"rplugininte***ce.h"
class
rexampleplugin
:public qobject,
public rplugininte***ce
virtual
void
uninit
(bool
)virtual
void
postinit
(initstatus)
//初始化`js`擴充套件
virtual
void
initscriptextensions
(qscriptengine&
)//外掛程式資訊
virtual rplugininfo getplugininfo()
;//外掛程式授權檢查
virtual
bool
checklicense()
//外掛程式國際化支援初始化
virtual
void
inittranslations()
};
rexampleplugin.cpp
#include
"rexampleplugin.h"
rplugininfo rexampleplugin::
getplugininfo()
#if qt_version < 0x050000
qt_begin_namespace
q_export_plugin2
(example, rexampleplugin)
qt_end_namespace
#endif
scripts.qrc
在工程目錄下,新建對應的資料夾、檔名以及其他資源。
scripts/mytool/mytool.js
scripts/mytool/mytool.js
相同的方式,建立外掛程式工程。實現選單功能需要繼承ractionadapter
。
#include
#include
#include
#include
#include
"ractionadapter.h"
#include
"rdocumentinte***ce.h"
#include
"rguiaction.h"
#include
"rmainwindow.h"
class
mytool
:public ractionadapter
static
void
factory
(rguiaction* guiaction)
rdocumentinte***ce* di = rmainwindow::
getdocumentinte***cestatic()
;if(di==
null
) di-
>
setcurrentaction
(new
mytool
(guiaction));
}virtual
void
beginevent()
};
修改postinit
初始化選單。
void rexampleplugin::
postinit
(initstatus status)
getmainwindow()
; rguiaction* guiaction =
newrguiaction
("&mytool"
; guiaction-
>
setrequiresdocument
(true);
guiaction-
>
setgroupsortorder
(100000);
guiaction-
>
setsortorder
(100);
>
menubar()
; qmenu* menu = menubar-
>findchild>
("miscmenu");
guiaction-
>
addtomenu
(menu)
; guiaction-
>
setfactory
(mytool::factory)
;}
QCAD 中文編碼問題
dxf檔案為文字檔案,中文編碼可能是utf 8編碼,也有可能是gbk編碼。qcad使用qt開發環境,字串統一按照utf 8編碼解碼,所以解析dxf檔案時對字串首先按照utf 8轉碼,如果轉碼失敗則按照gbk轉碼。qstring decode const std string str else ret...
使用QCAD進行二次開發之主要框架
qcad是一款開源的2d圖形繪製軟體,它的開源版本所擁有的功能已經能夠滿足基本的圖形繪製,並且可以匯出.dxf或.svg格式的圖形檔案,這對於繪製基本的工程圖元來說,功能上基本滿足。但是,使用者需要根據自己所在領域的業務需求進行改進,如何進行改進,將是接下來要介紹的內容。組成主要模組 core mo...
npm外掛程式開發 Vue外掛程式
vue init webpack npm vue ui,dependencies browserslist 1 last 2 versions not ie 8 devdependencies const path require path const webpack require webpack...