Dois painéis podem compartilhar um uicontrol em uma GUI do MATLAB?
-
13-12-2019 - |
Pergunta
Eu tenho uma GUI do MATLAB que possui diferentes aspectos de funcionalidade, cada um com seu próprio painel de controles de interface do usuário.Quando um painel é selecionado, o outro fica invisível e vice-versa.No entanto, eles compartilham algumas das mesmas entradas na forma de um menu pop-up.Posso incluir uma instância 'clone' do menu no segundo painel de alguma forma?Gostaria de evitar o máximo possível de retornos de chamada e controles de interface redundantes.
Solução
Eu acho que se o uicontrol fosse filho direto da figura, você poderia colocá-lo na frente de tudo.
Uma solução muito mais simples é usar o mesmo retorno de chamada para vários controles UI.No editor de propriedades, você pode modificar o nome do retorno de chamada e configurá-lo para uma função de retorno de chamada comum.Além disso, você pode criar um campo (por exemplo myPopupH
) no OpeningFcn
da GUI, na qual você armazena os identificadores dos pop-ups que devem se comportar da mesma maneira.Então, no retorno de chamada, você usaria hObject
, ou sejao primeiro argumento de entrada, para todos os get
chamadas (para acessar o estado modificado do menu pop-up), mas você usaria handles.myPopupH
em todos os set
chamadas, para que você possa garantir que ambos os pop-ups sempre tenham o mesmo estado.Assim, o objeto ui pode ser redundante, mas todo o código (que é muito mais crítico) existe apenas em uma única cópia.
Um lugar onde eu uso rotineiramente um único retorno de chamada para vários elementos da interface do usuário é a função de solicitação de fechamento, que é acessada a partir do botão "Cancelar", bem como do "X" que fecha a figura e, possivelmente, de um dos "Arquivo" -itens do menu.