【发布时间】:2019-06-18 08:25:25
【问题描述】:
在 MATLAB R2019a(更新 2)中,使用以下代码时,选择 Tab2 或 Tab3 时不显示坐标区工具栏。
classdef test < handle
properties
Ax
end
methods
function self = test()
f = figure;
tg = uitabgroup(f, 'SelectionChangedFcn', @self.onSelectionChanged);
t1 = uitab(tg, 'Title', 'tab1');
uitab(tg, 'Title', 'tab2');
uitab(tg, 'Title', 'tab3');
self.Ax = axes(t1);
end
function onSelectionChanged(self, ~, e)
self.Ax.Parent = e.NewValue;
end
end
end
我想知道如何使工具栏出现在选定的选项卡中。
编辑:以下代码更好地显示了问题:轴工具栏卡在第一个面板中,而轴在第二个面板中。但是,要重现这一点,请不要复制并粘贴到您的 MATLAB 命令窗口中。只有在绘制轴工具栏后轴的父级更改时才会发生这种情况。因此,我将代码分为两部分:
f = figure;
p1 = uipanel(f, 'Units', 'normalized', 'Position', [0 0 .5 1]);
p2 = uipanel(f, 'Units', 'normalized', 'Position', [.5 0 .5 1]);
ax = axes(p1);
现在更改轴的父级:
ax.Parent = p2;
这是我所期望的:
到目前为止,我还没有弄清楚如何触发将工具栏放置在正确位置的事件。
更改figure、axes、axtoolbar 或uipanel 的Visible 属性都没有帮助。此外,用新的工具栏覆盖工具栏也无济于事。
【问题讨论】:
-
toolbar是figure的子代,而不是axes。 -
@Hoki:工具栏的
Parent属性指向axes,而figure的Children属性只包含tabgroup。此外,工具栏没有类似Position属性... -
@Hoki:也许你把它弄混了。我说的是
axtoolbar生成的相对较新的轴工具栏。 -
我可以重现该问题。 This blog post 可能是相关的。
-
您应该添加工具栏“卡在”它出现的第一个选项卡/面板上。如果您在显示之前切换选项卡/面板,它将(仅)处于新位置。
标签: matlab tabs matlab-figure toolbar parent