C, C++/Qt
QML과 C++의 Interaction
batsalee
2023. 6. 6. 00:13
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;
}
...