![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/PPZe7/btsKzH1ZVBP/05cRGIK3EmTRS37rEUp1N0/img.webp)
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: 멤버 변수의 값이 변경될 때 발생할 시그널 (선택적). 사용 예제..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b1zObk/btsKxWfr9Hy/pFZeNjc7tqqkkALYhZsqKK/img.webp)
Q_PROPERTY는 Qt의 메타 객체 시스템에서 제공하는 매크로로, 클래스의 프로퍼티(property)를 선언하는 데 사용됩니다. 이 매크로를 사용하여 클래스 멤버를 QML이나 Qt의 시그널-슬롯 시스템에서 접근할 수 있게 하며, 바인딩을 가능하게 합니다. Q_PROPERTY는 일반적인 C++ 멤버 변수와 달리 QML과 같은 고수준 언어에서 데이터를 노출하고, 변화 감지 기능을 제공하여 UI를 자동으로 갱신하는 등 강력한 기능을 제공합니다. 기본 문법Q_PROPERTY(type name READ getter [WRITE setter] [RESET resetFunction] [NOTIFY notifySignal] ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bGnpdT/btsKw0N2tsn/McVAyqW1KEBvhmgXhQvcWK/img.webp)
QQmlEngine::setObjectOwnership 함수는 QML에서 객체의 소유권(ownership)을 설정하는 데 사용됩니다. QML에서 C++로부터 전달받은 객체의 수명을 관리할 수 있는 방법을 지정하여, 메모리 관리에 관련된 문제를 방지할 수 있도록 돕습니다. QML에서는 객체의 소유권을 설정함으로써 누가 객체의 수명을 관리하는지, 즉 언제 객체를 해제할지 명확히 할 수 있습니다. 이 함수는 C++과 QML 간의 소유권 관리에 있어서 중요한 역할을 합니다. 기본 문법enum QQmlEngine::ObjectOwnership { CppOwnership, // C++에서 객체의 수명 관리 JavaScriptOwnership // QML 엔진에서 객체의 수명 관리};static vo..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b6oXP3/btsKxuA9f0f/GhUvwefAoC0bE1smCPpV8K/img.webp)
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 포인터를 전달하..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/bV9l7V/btsJXs6e0sj/HVZJzD1jaJlO0jhVT7rZeK/img.png)
📌 샘플 소스코드 다운로드📌 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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/5TLzE/btsJMBpzkvG/vrSi5QnI21kC7hE3FyE8uk/img.png)
📌 샘플 소스코드 다운로드📌 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..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/b7iK20/btsJLKsNeoO/un3LOfftZWkCAnAtfsmDV1/img.png)
📌 샘플 소스코드 다운로드📌 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() ..
![](http://i1.daumcdn.net/thumb/C148x148/?fname=https://blog.kakaocdn.net/dn/elplwa/btsJKLLnAWD/hcCF7D6HNFt7HLg8m9BT4K/img.png)
📌 샘플 소스코드 다운로드📌 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)▪️ 브..
Exception : Unable to generate build files 메시지 확인될 때 프로젝트 경로 변경 후 디버그 모드로 실행 시 아래와같은 에러 메시지가 발생하였습니다. 뜨아~~ Building Windows application... CMake Error: The current CMakeCache.txt directory X:/dory_works/_dory/flutter_sample/systeminfo_monitor_sample/build/windows/CMakeCache.txt is different than the directory c:/dory_works/_dory/flutter_sample/systeminfo_monitor_sample/build/windows where CMakeC..