1

MATLAB R2012b で GUIDE を使用しておりuitable、編集可能な論理チェックボックスがあります。Cell Edit コールバックは次のとおりです。

function data_table_CellEditCallback(hObject, eventdata, handles)
row = eventdata.Indices(1);
column = eventdata.Indices(2);
if column ~= 1 % The checkboxes are all in the first row.  
    guidata(hObject,handles);
    return;
end
table_data = get(hObject,'Data');
if table_data(row,column) == true
    table_data(row,column) = false;
else
    table_data(row,column) = true;
end
set(hObject, 'Data', table_data);
handles.checked(row) = table_data(row,column); % Variable holding the data.  
guidata(hObject,handles);
end

チェックボックスの 1 つをクリックすると、テーブル内のデータが適切に更新されていることがわかります (両方とも更新された値get(hObject,'Data')handles.checked(row)返します) が、GUI の実際のチェックボックスは視覚的にチェックされません。もう一度クリックすると、変数は再び更新されますが、チェックボックスはオフのままです。

したがって、データは更新されていますが、GUI は更新されていません。ここで何がうまくいかないのですか?

注: 論理チェックボックスは GUIDE で編集可能に設定されているため、これは問題ではありません。

4

1 に答える 1

2

データグリッドの 'Data' プロパティを設定するために使用する配列は、通常、セル配列です。

コールバックが実行されると、配列内の値はチェックボックスの現在の状態を反映します。つまり、設定する必要はありません。

table_data を設定したい場合は、次のようなものを使用する必要があります。

 table_data{row,column} = eventdata.NewData;

ところで、ガイド テーブル プロパティ エディタで列形式を「論理」に設定していると仮定しています。

于 2013-10-27T03:28:16.993 に答える