歼击基 2023-04-10 21:17 采纳率: 28.6%
浏览 73
已结题

app designer中button回调函数问题

两个问题:
1、按下button后,复选树内若无勾选项UITable中表格并未恢复到刚读取EXCEL时的状态
2、在复选树内勾选多个值并要留下所有在表格中与之相对的列,但实操后只能保留除保留列外的1列

img


帮我看看代码

  • 写回答

4条回答 默认 最新

  • Leodong. 2023-04-10 21:37
    关注

    该回答通过自己思路及引用到GPTᴼᴾᴱᴺᴬᴵ搜索,得到内容具体如下:
    针对您提出的两个问题,以下分别进行回答:

    1、按下 button 后,复选树内若无勾选项 UITable 中表格并未恢复到刚读取 EXCEL 时的状态:
    【答】
    这个问题可能是因为您在 button 的回调函数中没有对 UITable 进行重置,导致表格中的数据没有清空或恢复到初始状态。您可以在 button 的回调函数中,添加清空 UITable 的代码。例如:

    function button_callback(app, event)
        % 按下 button 后的回调函数
        % 先清空 UITable
        app.UITable.Data = {};
        
        % 然后按照需要的逻辑重新读取数据并更新 UITable
        % ...
    end
    

    2、在复选树内勾选多个值并要留下所有在表格中与之相对的列,但实操后只能保留除保留列外的 1 列:
    【答】
    这个问题可能是因为您在处理勾选的复选树节点时,只取出了一个节点,并将其对应的列留下,而没有处理所有勾选的节点。您需要在处理复选树节点时,使用循环遍历所有勾选的节点,并将对应的列留下,最后将这些列合并成新的表格。例如:

    function button_callback(app, event)
        % 按下 button 后的回调函数
        % 先清空 UITable
        app.UITable.Data = {};
        
        % 读取 Excel 文件
        data = readExcelFile(app.ExcelFile);
        
        % 处理复选树勾选的节点
        selectedNodes = app.UITree.CheckedNodes;
        selectedColumns = [];
        for i = 1:length(selectedNodes)
            node = selectedNodes(i);
            % 根据节点名称确定对应的列索引
            column = getColumnIndex(data, node.Name);
            selectedColumns = [selectedColumns, column];
        end
        
        % 留下保留列和勾选的列,合并成新的表格
        reservedColumns = getColumnIndex(data, app.ReservedColumn);
        allColumns = [reservedColumns, selectedColumns];
        newData = data(:, allColumns);
        
        % 更新 UITable
        app.UITable.Data = newData;
    end
    

    在代码中,getColumnIndex 函数用于获取 Excel 数据中某一列的索引,您可以根据实际情况进行修改。


    如果以上回答对您有所帮助,点击一下采纳该答案~谢谢

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月17日
  • 创建了问题 4月10日

悬赏问题

  • ¥15 Opencv(C++)异常
  • ¥15 VScode上配置C语言环境
  • ¥15 汇编语言没有主程序吗?
  • ¥15 这个函数为什么会爆内存
  • ¥15 无法装系统,grub成了顽固拦路虎
  • ¥15 springboot aop 应用启动异常
  • ¥15 matlab有关债券凸性久期的代码
  • ¥15 lvgl v8.2定时器提前到来
  • ¥15 qtcp 发送数据时偶尔会遇到发送数据失败?用的MSVC编译器(标签-qt|关键词-tcp)
  • ¥15 cam_lidar_calibration报错