QML과 C++의 통신은 크게 4가지
1) QML에서 C++함수 호출
2) QML에서 C++클래스의 멤버 함수 호출
3) QML에서 특정값을 매개변수로 사용해 C++함수 호출
4) QML에서 이벤트 발생시 C++에서 구현한 Slot함수 호출하기

 

QML Type의 Property와 C++의 통신을 위해 Q_PROPERTY()를 사용
QML Type에서 C++ 클래스의 멤버함수 호출을 위해 Q_INVOKABLE을 사용
QML에서 이벤트가 발생하면 C++에서 public slot으로 정의한 SLOT함수를 실행

 

Q_PROPERTY

- C++에서 사용

- QML Type의 property를 C++과 통신하기 위해 사용

Q_PROPERTY( type name
	(READ getFunction [WRITE setFunction] |
	MEMBER memberName [(READ getFunction | WRITE setFunction)])
	[RESET resetFunction]
	[NOTIFY notifySignal]
	[REVISION int]
	[DESIGNABLE bool]
	[SCRIPTABLE bool]
	[STORED bool]
	[USER bool]
	[CONSTANT]
	[FINAL] )
// 사용 예시

#include <QObject>
class Message : public QObject
{
	Q_OBJECT
	Q_PROPERTY(	QString author	// QString자료형의 변수 author
				READ author		// author변수로 들어올 값을 리턴하는 함수의 이름 지정
				WRITE setAuthor // author변수의 값을 할당
				NOTIFY authorChanged) // signal 함수 명시
...

 

Q_INVOKABLE

- C++에서 사용

- public으로 선언한 멤버함수 호출을 위해 사용

#include <QObject>
class Message : public QObject
{
	Q_OBJECT
	...
public:
	Q_INVOKABLE bool postMessage(const QString &msg) 
	{
		...
		return true;
	}
...