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.

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top