我想在我製作的GUI中創建一個「撤消」功能。我的想法是創建一個對象的副本,當設置發生更改時,該對象將存儲我的GUI的所有設置。要做到這一點,如果有一個「主」回調會很方便,只要用戶觸發任何其他GUI回調就會觸發。這樣的回調是否存在?謝謝!在MATLAB中是否有觸發其他回調的回調?
回答
我不知道像您所描述的回調,但如果您將設置存儲在結構數組中,則可以返回到之前的設置。
這裏是我的建議:
1)與命令的結構喜歡這家店的GUI設置:
gui_settings.button1=1;
gui_settings.button2 = 0;
2)存儲在GUI中的設置結構你的gui圖的用戶數據
set(gcf, 'UserData', gui_settings)
3) 「StoreGuiSettings」,將讀取所有的GUI設置,然後將它們存回的UserData創建一個回調,該命令會是這個樣子:
gui_settings = get(gcf, 'UserData');
gui_settings(end+1) = gui_settings(end); %copy the last group of settings
gui_settings(end).button1 = get(h_button1, 'value'); % read button 1's setting
% read all the other settings ...
set(gcf, 'UserData', gui_settings) % Store the settings in UserData
4)修改您的其他回調以在某個時間點調用「StoreGuiSettings」回調以啓用撤消操作。5)製作一個「Undo」回調,從UserData中檢索gui設置,刪除結構中的最後一個元素array gui_settings(end) = [];
,並將gui_settings存儲回UserData。
如果您不想選擇「重做」選項,那麼刪除最後的設置即可。如果你想「重做」,那麼你將不得不保持一個指針,指向gui_settings結構數組中的哪個元素是當前的元素,然後當用戶想要「重做」或「撤銷」時更改指針。
- 1. 在matlab中使用其他回調中的按鈕回調
- 2. 在jQuery的.val()中使用回調是否有其他選擇?
- 3. 訂閱節是否觸發回調?
- 4. 如何從一個回調參數發送回其他回調?
- 5. Node.js「回調已被調用」。但沒有任何其他回調
- 6. 是否有觸發回調/觀察者的ActiveRecord :: Relation.update_all等價物?
- 7. MATLAB GUI中沒有回調?
- 8. 是否有History.pushstate的回調?
- 9. 每當Activerecord觸發一個回調:after_save回調觸發器
- 10. 是否有取回的Relay.createContainer回調?
- 11. JavaScript回調/關閉/其他
- 12. 從其他線程回調
- 13. 在RhinoMocks中使用回調觸發器
- 14. matlab GUI回調
- 15. Matlab ResizeFcn回調
- 16. jQuery.getJSON不會觸發回調
- 17. WebSocket回調未觸發angularjs
- 18. Firebase回調不會觸發
- 19. Timer.Elapsed回調未被觸發
- 20. C#如何觸發回調?
- 21. getJSON回調不觸發
- 22. Kivy UrlRequest不觸發回調
- 23. Laravel Echo不觸發回調
- 24. 手動觸發omniauth回調
- 25. CMAltimeter回調從未觸發
- 26. 觸發回調完成
- 27. AJAX回調不會觸發
- 28. PeekMessage觸發WndProc回調
- 29. PSelectionEventHandler不觸發回調
- 30. JQuery JSON回調未觸發
我不知道「回調回調」。但是你有沒有考慮將所有設置存儲在存儲其歷史記錄的地方?每當你更新這個calss時,它就會存儲它們,並且能夠撤銷你對它做出的任何更新。通過這種方式,您可以使更新功能成爲設置的屬性,而不是GUI。 – Shai
僅供參考:在MATLAB中有一個未公開的撤消「框架」,您可以使用它作爲發明這一全新功能的替代方案:http://undocumentedmatlab.com/blog/uiundo-matlab-undocumented-undo-redo-經理/ – sebastian
以及我可以想到一個函數,使用該圖的guidata;這個函數可以提取元素的所有屬性並保存。在每個回調中,您可以調用此函數並將guidata作爲參數。但我相當確信,如果有「很多」元素,這會降低GUI。 –