我使用JULS/C++。我有两个类,它们相互作用如下。
第一类“LabeledSider”用于创建带有标签的旋转手柄:
class LabeledSlider : public GroupComponent
{
public:
LabeledSlider(const String& name)
{
setText(name);
setTextLabelPosition(Justification::centredTop);
addAndMakeVisible(slider);
}
void resized() override
{
slider.setBounds(getLocalBounds().reduced(10));
}
Slider slider
{
Slider::RotaryHorizontalVerticalDrag, Slider::TextBoxBelow
};
};
第二类,labeledGroup,是指通过flexbox定义、显示和组织labeledSider对象的地方。这是为了允许旋钮分组:
class LabeledGroup : public GroupComponent
{
public:
LabeledGroup(const String& name)
{
setText(name);
setTextLabelPosition(Justification::centredTop);
addAndMakeVisible(dummy1);
addAndMakeVisible(dummy2);
addAndMakeVisible(dummy3);
addAndMakeVisible(dummy4);
}
void resized() override
{
//setBounds(getLocalBounds().reduced(10));
FlexBox knobBox1;
knobBox1.flexWrap = FlexBox::Wrap::wrap;
knobBox1.justifyContent = FlexBox::JustifyContent::flexStart;
knobBox1.alignContent = FlexBox::AlignContent::flexStart;
Array<LabeledSlider*> knobs1;
knobs1.add(&dummy1, &dummy2, &dummy3, &dummy4);
for (auto *k : knobs1)
knobBox1.items.add(FlexItem(*k).withMinHeight(80.0f).withMinWidth(80.0f).withFlex(1));
FlexBox fb1;
fb1.flexDirection = FlexBox::Direction::column;
fb1.items.add(FlexItem(knobBox1).withFlex(2.5));
fb1.performLayout(getLocalBounds().toFloat());
}
private:
LabeledSlider dummy1{ "Dummy 1" };
LabeledSlider dummy2{ "Dummy 2" };
LabeledSlider dummy3{ "Dummy 3" };
LabeledSlider dummy4{ "Dummy 4" };
};
我希望能够用数组和for循环替换中手动定义的LabeledSider对象列表。通过这种方式,我可以在实现的其他地方分别为每个labeledgroup对象定义每个数组的成员。
创建一个名为“封套”的标签组对象,带有“攻击、衰减、释放、维持”旋钮。另一个标签组对象称为“失真”与旋钮“驱动,水平”。
作为实现这一点的第一步,我希望在我已经用于测试的labeledgroup类中实现一些基本数组。
最简单的是,我想替换以下行:
addAndMakeVisible(dummy1);
addAndMakeVisible(dummy2);
addAndMakeVisible(dummy3);
addAndMakeVisible(dummy4);
用:
LabeledSlider group1string[] = { "dummy1", "dummy2", "dummy3", "dummy4" };
for (LabeledSlider& i : group1string)
{
addAndMakeVisible(i);
}
这样做没有错误。但是当我用这个替代品制造的时候,旋钮就不再出现了。所以它显然不起作用。for循环是否应该复制已经存在的确切四行?如果没有,我在循环中做了什么错误?
谢谢。