음악, 삶, 개발
Component 안에 Component 집어넣기. 본문
설명
Panel 컴포넌트를 만들어, Canvas 컴포넌트안에 넣으려한다.
아래와 같이 코드를 작성한다.
1. Canvas 클래스의 멤버로 Panel 컴포넌트를 집어넣는다.
2. Canvas 클래스의 Constructor 에서 addAndMakeVisible 함수를 사용하여 각 멤버를 인자로 넘긴다.
3. Canvas 클래스의 resized() 함수에서 setBounds 를 사용하여 위치 시켜준다.
2번 Step 이 누락되었을때, 아무것도 표시되지않음을 알아야한다.
코드
class Panel : public juce::Component {
public :
Panel(const juce::Colour& newColor) : color(newColor) {}
void paint(juce::Graphics& g) override {
g.fillAll(color);
}
private :
const juce::Colour color;
};
class Canvas : public juce::Component {
public :
Canvas() {
setSize (canvasW, canvasH); // 부모 클래스에서 getWidth(), getHeight() 로 가져올수있음.
addAndMakeVisible(left);
addAndMakeVisible(center);
addAndMakeVisible(right);
}
void resized() override {
left .setBounds(100, 100, 100, 100);
center .setBounds(400, 100, 100, 100);
right .setBounds(700, 100, 100, 100);
}
private :
const int canvasW {1000};
const int canvasH {1000};
Panel left {juce::Colours::red};
Panel center {juce::Colours::green};
Panel right {juce::Colours::blue};
JUCE_DECLARE_NON_COPYABLE_WITH_LEAK_DETECTOR (Canvas)
};
출력