QML에서 Connections 객체는 특정 시그널에 대한 핸들러를 연결하는 데 사용됩니다. 일반적으로 QML 컴포넌트에서 제공하는 시그널을 처리할 때는 해당 컴포넌트 내에서 직접 핸들러를 정의하지만, 경우에 따라 시그널과 핸들러를 분리해서 선언하는 것이 필요할 때가 있습니다. 이때 Connections 객체를 사용하면 보다 유연하고 분리된 시그널-슬롯 연결을 구현할 수 있습니다. 기본 문법Connections { target: someObject // 시그널을 발생시키는 대상 객체 onSignalName: { // 시그널이 발생했을 때 실행할 코드 }}target: 시그널을 발생시키는 객체. 이 객체의 시그널에 핸들러가 연결됩니다.onSignalName: 특정 시그널을..
Q_PROPERTY 매크로의 MEMBER 키워드는 클래스 멤버 변수를 직접적으로 Q_PROPERTY로 노출하는 데 사용됩니다. MEMBER를 사용하면 별도의 Getter/Setter 함수를 정의할 필요 없이 클래스 멤버 변수를 바로 프로퍼티로 연결할 수 있어 코드를 간결하게 만들 수 있습니다. 기본 문법Q_PROPERTY(type name MEMBER memberVariable [NOTIFY notifySignal])type: 프로퍼티의 자료형 (예: int, QString 등).name: 프로퍼티의 이름.MEMBER memberVariable: Q_PROPERTY와 연결할 클래스 멤버 변수.NOTIFY notifySignal: 멤버 변수의 값이 변경될 때 발생할 시그널 (선택적). 사용 예제..
Q_PROPERTY는 Qt의 메타 객체 시스템에서 제공하는 매크로로, 클래스의 프로퍼티(property)를 선언하는 데 사용됩니다. 이 매크로를 사용하여 클래스 멤버를 QML이나 Qt의 시그널-슬롯 시스템에서 접근할 수 있게 하며, 바인딩을 가능하게 합니다. Q_PROPERTY는 일반적인 C++ 멤버 변수와 달리 QML과 같은 고수준 언어에서 데이터를 노출하고, 변화 감지 기능을 제공하여 UI를 자동으로 갱신하는 등 강력한 기능을 제공합니다. 기본 문법Q_PROPERTY(type name READ getter [WRITE setter] [RESET resetFunction] [NOTIFY notifySignal] ..
QQmlEngine::setObjectOwnership 함수는 QML에서 객체의 소유권(ownership)을 설정하는 데 사용됩니다. QML에서 C++로부터 전달받은 객체의 수명을 관리할 수 있는 방법을 지정하여, 메모리 관리에 관련된 문제를 방지할 수 있도록 돕습니다. QML에서는 객체의 소유권을 설정함으로써 누가 객체의 수명을 관리하는지, 즉 언제 객체를 해제할지 명확히 할 수 있습니다. 이 함수는 C++과 QML 간의 소유권 관리에 있어서 중요한 역할을 합니다. 기본 문법enum QQmlEngine::ObjectOwnership { CppOwnership, // C++에서 객체의 수명 관리 JavaScriptOwnership // QML 엔진에서 객체의 수명 관리};static vo..
QQmlContext::setContextProperty 함수는 QML에서 사용할 수 있는 데이터와 객체를 QML 엔진에 전달할 때 사용하는 매우 중요한 함수입니다. 이를 통해 C++ 객체나 데이터를 QML 코드에서 직접 접근하고 사용할 수 있게 됩니다. 이 함수는 특히 C++에서 동적으로 생성된 데이터를 QML UI에 결합하고 싶을 때 유용합니다. 기본 문법void QQmlContext::setContextProperty(const QString &name, QObject *value);void QQmlContext::setContextProperty(const QString &name, const QVariant &value);이 함수는 두 가지 오버로드를 제공합니다:QObject 포인터를 전달하..
📌 샘플 소스코드 다운로드📌 C++ 샘플 소스코드📌 구현에 대한 설명📌 이 구현 방식의 장점📌 주의할 점 샘플 소스코드 다운로드 C++ 샘플 소스코드#include #include #include #include // 프로토타입 기본 클래스class Prototype {public: virtual ~Prototype() = default; virtual std::unique_ptr clone() const = 0; virtual void print() const = 0;};// 구체적인 프로토타입 클래스class ConcretePrototype : public Prototype {public: ConcretePrototype(std::string type) : t..
📌 샘플 소스코드 다운로드📌 C++ 샘플 소스코드📌 구현에 대한 설명📌 이 구현 방식의 장점📌 주의할 점 샘플 소스코드 다운로드 C++ 샘플 소스코드#include #include #include // 추상 제품 클래스들class Chair {public: virtual ~Chair() = default; virtual void sit() const = 0;};class Table {public: virtual ~Table() = default; virtual void use() const = 0;};// 구체적인 제품 클래스들 - 모던 스타일class ModernChair : public Chair {public: void sit() const overri..
📌 샘플 소스코드 다운로드📌 C++ 샘플 소스코드📌 구현에 대한 설명📌 이 구현 방식의 장점📌 주의할 점 샘플 소스코드 다운로드 C++ 샘플 소스코드#include #include #include // 제품 인터페이스class Vehicle {public: virtual ~Vehicle() = default; virtual void drive() const = 0;};// 구체적인 제품들class Car : public Vehicle {public: void drive() const override { std::cout createVehicle() const = 0; // 공통 로직을 포함한 메서드 void deliverVehicle() ..
📌 샘플 소스코드 다운로드📌 C++ 샘플 소스코드📌 구현에 대한 설명📌 이 구현 방식의 장점📌 주의할 점 샘플 소스코드 다운로드 C++ 샘플 소스코드#include #include class Singleton {public: // 싱글톤 인스턴스를 얻는 정적 메서드 static Singleton& getInstance() { static Singleton instance; // 정적 지역 변수로 인스턴스 생성 return instance; } // 일반적인 멤버 함수 void setValue(const std::string& value) { m_value = value; } std::string getValu..
실무에서 자주 사용되는 디자인 패턴을 주요 카테고리별로 정리 하였습니다. 📌 생성 패턴 (Creational Patterns)📌 구조 패턴 (Structural Patterns)📌 행위 패턴 (Behavioral Patterns)📌 동시성 패턴 (Concurrency Patterns)📌 아키텍처 패턴 (Architectural Patterns) 1. 생성 패턴 (Creational Patterns) ▪️ 싱글톤 (Singleton) ▪️ 팩토리 메서드 (Factory Method) ▪️ 추상 팩토리 (Abstract Factory) ▪️ 빌더 (Builder) ▪️ 프로토타입 (Prototype) 2. 구조 패턴 (Structural Patterns)▪️ 어댑터 (Adapter)▪️ 브..