2025년 12월 15일

QT에서 C++ 로직에 enum을 활용할 경우, QML에서 해당 enum을 불러오기 위해선 별도의 등록이 필요하다.
예를 들어 아래의 enum을 사용하고 싶다면,
<CPP>
class MainWindow : public QMainWindow
{
Q_OBJECT
public:
enum class Example { //enum과 enum class 모두 가능하다.
A,
B,
C,
D,
E,
};
Q_ENUM(Example) //선언<CPP>
qmlRegisterType<클래스명>("enum클래스명", 1, 0, "enum클래스명");
ex) qmlRegisterType<MainWindow>("Example", 1, 0, "Example");이와 같이 Q_ENUM(Example)과 qmlRegisterType을 등록해줘야한다.
선언 위치는 상관없지만 보통 main에서 선언하는 경우가 일반적으로 보인다.
이렇게 C++에서 선언해줬으면 QML에서는 다음과 같이 사용할 수 있다.
<QML>
import Example 1.0; //qmlRegisterType으로 등록한 것을 import
...
Example.A
Example.B이런식으로 불러와 사용할 수 있다.