ZW3D的非模板表单的控件即“ZW3D Widgets”下的控件,常用的如“ZsCc::ComboBox”,"Zscc::ListWidget","ZsCc::MatrixPushButtons","Zscc::TableWidget"和"ZsCc::TreeView"等,使用它们时,ZW3D在内部实现了这些控件的最常用的回调机制(比如按钮点击回调,列表选中项更改等)。
在设计表单UI时,我们需要设置这些控件的Id和回调命令名,以便准确触发回调
1.在表单UI中添加Id和回调命令名
这里以“ZsCc::MatrixPushButtons为例”,添加控件后,属性页的“Dynamic Properties”中默认有一个“Id”,此即该识别该控件的唯一id,可为任意正整数
点击属性页的“+”号,选择“String...”类型,在弹出的窗口中的“Property Name”中输入“callback”,确定
此时在属性页的“Dynamic Properties”中便多了一个动态属性“callback”,在其中输入回调命令“ZsCcMatrixPushButtons_update_cb”(名称可自定),最后保存表单UI
2.在代码中编写及注册注销回调命令
非模板表单的控件的回调函数的函数签名为:
int CallbackName(char* formName, int idField, int idItem);
其中第一个参数为表单名,第二个参数为触发此回调的控件,第三个参数为更具体的触发此回调的控件中的元素(ZW3D中很多控件是多个qt控件复合而成)
int ZsCcMatrixPushButtons_update_cb(char* formName, int idField, int idItem)
{WriteMessage("表单【%s】的控件id为【%d】的按钮被按下", formName, idField);return 0;
}
在插件的入口和出口函数中注册和注销回调命令
//入口函数,函数名必须为“项目名”+“Init”,区分大小写
// Entry function, which must be named as "Project name" + "Init" ,case sensitive
extern "C" _declspec(dllexport) int 项目名Init(int format, void* data)
{ZF_CALL(cvxCmdFunc("ZsCcMatrixPushButtons_update_cb", ZsCcMatrixPushButtons_update_cb, VX_CODE_GENERAL));return 0;
}//出口函数,函数名必须为“项目名”+“Exit”,区分大小写
// Exit function, which must be named as "Project name" + "Exit" ,case sensitive
extern "C" _declspec(dllexport) int 项目名Exit(void)
{ZF_CALL(cvxCmdFuncUnload("ZsCcMatrixPushButtons_update_cb"));return 0;
}
3.效果
按下按钮后,回调命令触发