ZW3D二次开发_UI_ZsCcTableWidget表格控件

发布时间:2026/5/19 17:24:01

ZW3D二次开发_UI_ZsCcTableWidget表格控件 1.代码#define FormName (char*)ZsCcTableWidget #define id1 1 void UI_普通对话框_ZsCcTableWidget() { ZF_VOID(cvxFormShow(FormName)); } //设置单元格的前景色 void cvxTableFgColorSet(char* form, int idTable, int row, int col, svxColor color) { svxTableAt at; ZF_CALL(cvxTableAtSetInit(at)); at.Row row; at.Col col; at.SetFgColor 1; at.FgColor color; ZF_CALL(cvxTableAtSet(form, idTable, at)); } //设置表格大小适应内容 void cvxTableAutoSize(char* form, int idTable) { svxTableAt at; ZF_CALL(cvxTableAtSetInit(at)); at.AutoSize 3; at.AllowResize 3; ZF_CALL(cvxTableAtSet(form, idTable, at)); } //表格控件初始化 void _UI_普通对话框_ZsCcTableWidget_Init() { //设置行列数 ZF_CALL(cvxTableSizeSet(FormName, id1, 0, 0)); //插入列 ZF_CALL(cvxTableColInsert(FormName, id1, 0)); ZF_CALL(cvxTableColInsert(FormName, id1, 1)); ZF_CALL(cvxTableColInsert(FormName, id1, 2)); ZF_CALL(cvxTableColInsert(FormName, id1, 3)); ZF_CALL(cvxTableColInsert(FormName, id1, 4)); ZF_CALL(cvxTableColInsert(FormName, id1, 5)); ZF_CALL(cvxTableColInsert(FormName, id1, 6)); //删除列 ZF_CALL(cvxTableColRemove(FormName, id1, 6)); //设置列宽范围 ZF_CALL(cvxTableSetHeaderSectionSize(FormName, id1, 100, FALSE));//最大列宽 ZF_CALL(cvxTableSetHeaderSectionSize(FormName, id1, 30, TRUE));//最小列宽 //获取表格列数 int colCount cvxTableColCnt(FormName, id1); WriteMessage(表格列数 %d, colCount); //设置列标题 const char* colHeaders[1024] { 文字,复选框,下拉框,颜色,日期和时间,整数 }; ZF_CALL(cvxTableSetHorHeaderList(FormName, id1, 6, colHeaders)); //获取第0列列标题 char colHeaderText[1024] { 0 }; ZF_CALL(cvxTableCellTextGet(FormName, id1, -1, 0, colHeaderText, sizeof(colHeaderText))); WriteMessage(第0列列标题 %s, colHeaderText); //设置列标题可见性 ZF_CALL(cvxTableHorHeaderVisibleSet(FormName, id1, TRUE)); //设置标题对齐方式 ZF_CALL(cvxTableSetHeaderAlignment(FormName, id1, FALSE, evxTableAlignFlag::VX_TABLE_ALIGN_RIGHT)); //设置列宽模式 ZF_CALL(cvxTableSetHeaderColResizeMode(FormName, id1, 0, evxTableResizeMode::VX_TABLE_RESIZE_MODE_RESIZETOCONTENTS)); //插入行 ZF_CALL(cvxTableRowInsert(FormName, id1, 0)); ZF_CALL(cvxTableRowInsert(FormName, id1, 1)); ZF_CALL(cvxTableRowInsert(FormName, id1, 2)); //删除行 ZF_CALL(cvxTableRowRemove(FormName, id1, 2)); //获取表格行数 int rowCount cvxTableRowCnt(FormName, id1); WriteMessage(表格行数 %d, rowCount); //设置行标题 const char* rowHeaders[1024] { 第0行,第1行 }; ZF_CALL(cvxTableSetVerHeaderList(FormName, id1, 2, rowHeaders)); //获取第0行行标题 char rowHeaderText[1024] { 0 }; ZF_CALL(cvxTableCellTextGet(FormName, id1, 0, -1, rowHeaderText, sizeof(rowHeaderText))); WriteMessage(第0行行标题 %s, rowHeaderText); //设置行标题可见性 ZF_CALL(cvxTableVerHeaderVisibleSet(FormName, id1, TRUE)); //设置某行或某列标题是否勾选 ZF_CALL(cvxTableHeaderCellCheck(FormName, id1, TRUE, 1, TRUE)); //设置第0行第0列的单元格内容和图标 //cvxTableCellTextSet ZF_CALL(cvxTableCellTextSet2(FormName, id1, 0, 0, (char*)第0行第0列, (char*)MotBandAnal)); //获取第0行第0列的单元格内容 char text[1024]; ZF_CALL(cvxTableCellTextGet(FormName, id1, 0, 0, text, sizeof(text))); //cvxTableGetText WriteMessage(第0行第0列内容 %s, text); //设置第0行第0列的单元格的鼠标悬停提示 ZF_VOID(cvxTableCellTipSet(FormName, id1, 0, 0, (char*)第0行第0列悬停提示)); //获取第0行第0列的单元格的鼠标悬停提示 char tip[1024]{}; ZF_VOID(cvxTableCellTipGet(FormName, id1, 0, 0, tip, sizeof(tip))); WriteMessage(第0行第0列鼠标悬停提示 %s, tip); //设置第0行第0列的单元格的字体颜色 ZF_VOID(cvxTableFgColorSet(FormName, id1, 0, 0, { 255,0,0 })); //将第0行第1列单元格设置为复选框并勾选 ZF_CALL(cvxTableCheckSet(FormName, id1, 0, 1, TRUE)); //获取第0行第1列单元格复选框的勾选状态 int isChecked cvxTableIsCheck(FormName, id1, 0, 1); WriteMessage(第0行第1列单元格复选框【%s】勾选, isChecked 1 ? 已 : 未); //将第0行第2列单元格设置为下拉列表,下拉选项集合为字符串用“,”分割 ZF_CALL(cvxTableComboSet(FormName, id1, 0, 2, (char*)下拉选项0,下拉选项1,下拉选项2)); //cvxTableComboSet2 ZF_CALL(cvxTableComboSetOption(FormName, id1, 0, 2, 2, (char*)));//设置选中项 //将第1行第2列单元格设置为可输入型下拉列表 //cvxTableInputComboSet(FormName, id1, 1, 2, 下拉选项0,下拉选项1,下拉选项2); ZF_CALL(cvxTableInputComboSet2(FormName, id1, 1, 2, (char*)下拉选项0,LSM下拉选项1,WKL下拉选项2, (char*)ICON1704,ICON1705,ICON1706)); #if VX_API_VERSION 3005 //设置下拉列表的前景色或背景色 szwColor comboCellColor {0,0,255}; ZF_CALL(ZwUiTableCellColorSet(FormName, id1,0 , 1, 2, comboCellColor)); //清除下拉列表的前景色或背景色 ZF_CALL(ZwUiTableCellColorClear(FormName, id1, 1, 2)); #endif //获取第0行第2列单元格下拉列表选中项的索引及值 int selectedIndex -1; char selectedText[1024]; ZF_CALL(cvxTableComboGet(FormName, id1, 0, 2, selectedIndex, selectedText, sizeof(selectedText))); WriteMessage(第0行第2列选中值的索引是 %d值 %s, selectedIndex, selectedText); //将第0行第3列单元格设置为颜色单元格 svxColor trueColor { 0,0,0 }; int colorIndex evxColor::VX_COLOR_RED;//红色 int colorType 1;//0-使用trueColor1-使用colorIndex ZF_CALL(cvxTableColorSet(FormName, id1, 0, 3, trueColor, colorIndex, colorType)); WriteMessage(第0行第3列单元格设置颜色(evxColor) %d, colorIndex); //获取第0行第3列单元格颜色单元格的颜色 svxColor trueColor_get { -1,-1,-1 }; int colorIndex_get -1; unsigned char colorType_get -1; ZF_CALL(cvxTableColorGet(FormName, id1, 0, 3, trueColor_get, colorIndex_get, colorType_get)); WriteMessage(第0行第3列颜色的索引是 %d, colorIndex_get); //将第0行第4列单元格设置为日期单元格 ZF_CALL(cvxTableDateSet(FormName, id1, 0, 4, ((long)time((time_t*)NULL)), evxDateType::VX_DATE_ONLY)); //获取第0行第4列日期单元格的值 evxDateType dateType; int date 0; ZF_CALL(cvxTableDateGet(FormName, id1, 0, 4, date, dateType)); struct tm locTime; char buffer[80]; time_t time date; struct tm now_time; localtime_s(locTime, time); strftime(buffer, sizeof(buffer), %Y-%m-%d %H:%M:%S %A, locTime); WriteMessage(第0行第4列日期时间值 %s, buffer); //将第0行第5列单元格设置为数字单元格只能输入整数 ZF_CALL(cvxTableNumSet(FormName, id1, 0, 5, (char*)2099)); //获取第0行第5列数字单元格的值 char num[1024] {}; ZF_CALL(cvxTableNumGet(FormName, id1, 0, 5, num, sizeof(num))); WriteMessage(第0行第5列数字值 %s, num); #if VX_API_VERSION 3000 //合并单元格 ZF_CALL(ZwUiTableWidgetCellMerge(FormName, id1,0,1,5,5)); #endif //(拖动滚动条)确保第0行第5列在当前显示区域 ZF_VOID(cvxTableVisSet(FormName, id1, 0, 5)); //设置第1行第0列单元格的内容 ZF_CALL(cvxTableCellTextSet(FormName, id1, 1, 0, (char*)第1行第0列)); //设置第1行第0列单元格的可用性 int state 1;//0-不可编辑不可选中1-可选中不可编辑2-可选中可编辑 ZF_VOID(cvxTableCellEnableSet(FormName, id1, 1, 0, state)); WriteMessage(设置第1行第0列单元格的可用性 %d(0-不可编辑不可选中1-可选中不可编辑2-可选中可编辑), state); //调整表格大小适应内容 ZF_VOID(cvxTableAutoSize(FormName, id1)); //设置当前选中区域 svxRectangle rectangle{0,0,1,1}; ZF_CALL(cvxTableSetSelRange(FormName, id1,rectangle,TRUE)); //获取当前选中区域 int selectedRangeNumber 0; svxRectangle* pSelectedRanges NULL; ZF_CALL(cvxTableGetSelRange(FormName, id1,selectedRangeNumber,pSelectedRanges)); WriteMessage(当前选中区域的数量 %d, selectedRangeNumber); ZF_VOID(cvxMemFree((void**)pSelectedRanges)); //获取所有选择 ZF_CALL(cvxTableUnselectAll(FormName, id1)); WriteMessage(已取消所有选择); } void _UI_普通对话框_ZsCcTableWidget_Cancel() { } void _UI_普通对话框_ZsCcTableWidget_Reset() { } void _UI_普通对话框_ZsCcTableWidget_Apply() { } void _UI_普通对话框_ZsCcTableWidget_Okay() { } int _UI_普通对话框_ZsCcTableWidget_form_cb(int formAction, int* unusedInteger) { ZF_WriteThisFunctionName(); if (formAction evxFormAction::VX_FORM_INIT) { WriteMessage(对话框初始化); _UI_普通对话框_ZsCcTableWidget_Init(); } else if (formAction evxFormAction::VX_FORM_CANCEL) { WriteMessage(用户点击了“取消”按钮); _UI_普通对话框_ZsCcTableWidget_Cancel(); } else if (formAction evxFormAction::VX_FORM_RESET) { WriteMessage(用户点击了“重置”按钮); _UI_普通对话框_ZsCcTableWidget_Reset(); } else if (formAction evxFormAction::VX_FORM_APPLY) { WriteMessage(用户点击了“应用”按钮); _UI_普通对话框_ZsCcTableWidget_Apply(); } else if (formAction evxFormAction::VX_FORM_OKAY) { WriteMessage(用户点击了“确定”按钮); _UI_普通对话框_ZsCcTableWidget_Okay(); } return 0; } /// summary /// 控件的回调函数由ZW3D自动调用 /// /summary /// param nameformName对话框的名称/param /// param nameidField控件的Id/param /// param nameidItem控件中正在操作的项/param /// returns/returns //int _UI_普通对话框_ZsCcTableWidget_update_cb(char* formName, int idField, int idItem) int _UI_普通对话框_ZsCcTableWidget_update_cb(char* formName, int idField, int idItem) { ZF_WriteThisFunctionName(); //获取回调参数 svxTableCallBackParam param{};//这里必须初始化不然后面使用cvxTableCallBackParamFree会引发崩溃 ZF_CALL(cvxTableCallBackParamGet(FormName, id1, param)); WriteMessage(回调事件 %s, ZF_EnumToString(evxTableEvent,param.evt)); //根据回调触发原因做相应的操作 switch (param.evt) { case VX_LEFT_DOUBLE_CLICK: WriteMessage(用户左键双击了第%d行第%d列, param.iRow, param.iCol); break; case VX_RIGHT_CLICK: WriteMessage(用户右击了第%d行第%d列, param.iRow, param.iCol); break; case VX_CELL_CLOSE_EDITOR: { evxTableCellType cellType; ZF_CALL(cvxTableTypeGet(FormName, id1, param.iRow, param.iCol, cellType)); if (cellType VX_TABLECELL_TYPE_TEXT) { char text[1024]; ZF_CALL(cvxTableCellTextGet(FormName, id1, param.iRow, param.iCol, text, sizeof(text))); WriteMessage(第%d行第%d列的内容更改为:%s, param.iRow, param.iCol, text); } } break; case VX_DATA_CHANGED://数据更改 { evxTableCellType cellType; ZF_CALL(cvxTableTypeGet(FormName, id1, param.iRow, param.iCol, cellType)); switch (cellType) { case VX_TABLECELL_TYPE_COMBOBOX: { int selectedIndex -1; char selectedText[1024]; ZF_CALL(cvxTableComboGet(FormName, id1, 0, 2, selectedIndex, selectedText, sizeof(selectedText))); WriteMessage(第%d行第%d列选中值的索引是 %d值 %s, param.iRow, param.iCol, selectedIndex, selectedText); } break; case VX_TABLECELL_TYPE_CHECKBOX: { int isChecked cvxTableIsCheck(FormName, id1, param.iRow, param.iCol); WriteMessage(第%d行第%d列勾选状态 %d, param.iRow, param.iCol, isChecked); } break; case VX_TABLECELL_TYPE_NUMBER: { char num[32]; ZF_CALL(cvxTableNumGet(FormName, id1, param.iRow, param.iCol, num, sizeof(num))); WriteMessage(第%d行第%d列的数字值更改为 %s, param.iRow, param.iCol, num); } default: break; } } break; default: break; } //释放回调参数内存 ZF_VOID(cvxTableCallBackParamFree(param)); return 0; } void UI_普通对话框_ZsCcTableWidget_注册回调函数_Init() { ZF_CALL(cvxCmdFunc(ZsCcTableWidget_form_cb, _UI_普通对话框_ZsCcTableWidget_form_cb, VX_CODE_GENERAL)); ZF_CALL(cvxCmdFunc(ZsCcTableWidget_update_cb, _UI_普通对话框_ZsCcTableWidget_update_cb, VX_CODE_GENERAL)); } void UI_普通对话框_ZsCcTableWidget_注销回调函数_Exit() { ZF_CALL(cvxCmdFuncUnload(ZsCcTableWidget_form_cb)); ZF_CALL(cvxCmdFuncUnload(ZsCcTableWidget_update_cb)); }2.UI?xml version1.0 encodingUTF-8? ui version4.0 classForm/class widget classZsCc::Form nameForm property namegeometry rect x0/x y0/y width448/width height309/height /rect /property property namewindowTitle stringForm/string /property property namefunctionName string notrtrueZsCcTableWidget_form_cb/string /property property namemode enumZsCc::Form::Normal/enum /property property namepersistent enumZsCc::Form::Temporary/enum /property property nameform_pos stdset0 stringlist stringbase,CTR,0/string /stringlist /property layout classQGridLayout namegridLayout property namemargin number2/number /property item row0 column0 widget classZsCc::TableWidget nametableWidget property nameid stdset0 number1/number /property property namecallback stdset0 stringZsCcTableWidget_update_cb/string /property property nameeventsEnabled stdset0 stringlist stringdbl_clk/string /stringlist /property /widget /item item row1 column0 widget classQDialogButtonBox namebuttonBox property namestandardButtons setQDialogButtonBox::Apply|QDialogButtonBox::Cancel|QDialogButtonBox::Ok|QDialogButtonBox::Reset/set /property property namecenterButtons booltrue/bool /property /widget /item /layout /widget customwidgets customwidget classZsCc::Form/class extendsQDialog/extends headernui/CommonControls/CcForm.hpp/header container1/container /customwidget customwidget classZsCc::TableWidget/class extendsQTableWidget/extends headernui/CommonControls/CcTableWidget.hpp/header /customwidget /customwidgets resources/ connections connection senderbuttonBox/sender signalclicked(QAbstractButton*)/signal receiverForm/receiver slotonClickStandardButton(QAbstractButton*)/slot hints hint typesourcelabel x223/x y67/y /hint hint typedestinationlabel x223/x y40/y /hint /hints /connection /connections /ui

相关新闻