음악, 삶, 개발

Component 안에 Component 집어넣기. 본문

개발 공부/Juce Gui

Component 안에 Component 집어넣기.

Lee_____ 2020. 10. 26. 14:26

설명

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)
    
};

출력