2016-07-22 41 views
1

我有一个带有嵌套面板的Matlab GUIDE图。我也在面板顶部有控制对象。这里有一个概念上的例子:更改GUIDE对象的父面板

guide panels

为了对齐所有复选框,他们都需要是相同的控制小组。我想移动复选框,使他们的父母是主面板而不是其中一个子面板。子面板只是用于可视化分组,并没有真正的功能价值。

对象浏览器显示关系,但我没有办法改变它。我尝试粘贴要移动到子面板之外的对象,然后将其拖回到子面板中,但它们会自动添加到子面板中。如果我在子面板之外粘贴,我可以使用箭头键将它们移回,父母将保留主面板,但这会变得乏味。

如何更改GUIDE控件对象的父面板?

+0

@Suever,不确定您的答案被删除之前是否看到我的回复。我希望能够对齐来自多个子面板的组件,因此它们都需要位于同一个控制组中。 –

回答

1

构建GUI与guide一个可能的解决方案是:

  • 增加主要uipanel
  • 添加在主`uipanel”
  • 对准他们所有的checkbox(例如通过选择其中的一些然后使用指南工具栏上的Align Objects工具
  • uipanel添加到checkbox的某些上,它将覆盖“复选框”
  • 选择辅助uipanel
  • 上单击鼠标右键,弹出右键菜单
  • 选择Send to Back选项

enter image description here

如果你想创建GUI“编程“您可以:

  • 创建figure
  • 添加主面板与uipanel
  • 添加的复选框与uicontrol设置Style属性checkboxposition属性,使得它们将被放置在主面板
  • 添加辅助uipanel。此外,在这种情况下,二次uipanel会掩盖checkbox
  • 推副面板背面使用uistack功能

Thsi是一个可能的实现

% Create the figure 
figure 
% Add the Main uipanel 
p1=uipanel('units','normalized','position',[.1 .1 .5 .7],'title','Main Panel') 
% Add come checkboxes 
cb1=uicontrol('parent',p1,'style','checkbox','units','normalized', ... 
    'position',[.1 .7 .3 .1],'string','checkbox 1') 
cb2=uicontrol('parent',p1,'style','checkbox','units','normalized', ... 
    'position',[.1 .6 .3 .1],'string','checkbox 2') 
cb3=uicontrol('parent',p1,'style','checkbox','units','normalized', ... 
    'position',[.1 .5 .3 .1],'string','checkbox 3') 
% Add the Secondary uipanel 
p2=uipanel('parent',p1,'units','normalized','position',[.05 .4 .4 .5], ... 
    'title','Secondary Panel') 
% Push the secondary uipanel back 
uistack(p2,'bottom') 

enter image description here

希望这有助于。

Qapla'

+0

这很好,假设我提前计划了所有事情。当我建立在我已经创建的东西上时,问题就出现了。我宁愿不必删除辅助面板,添加新按钮,然后重新添加面板。 –