Programming
[Qt] 프로퍼티 사용하기
와신상담
2008. 12. 14. 14:56
Qt에서 프로퍼티를 사용하기 위해서는 클래스 선언 내에 다음과 같은 형식으로 정의해주면 된다.
Q_PROPERTY( type name READ getFunction [WRITE setFunction]
[RESET resetFunction] [DESIGNABLE bool]
[SCRIPTABLE bool] [STORED bool] )
getFunction, setFunction은 이름 그대로이며 resetFunction은 디폴트 값으로 리셋하는 함수이다
(나머지는 http://doc.trolltech.com/3.3/properties.html 참조)
Q_PROPERTY 매크로로 등록된 프로퍼티는 Qt 디자이너의 프로퍼티 편집기에 나타난다.
■ 주의할 점
- Q_PROPERTY 매크로는 QObject의 서브 클래스에서만 사용 가능하다.
- Q_OBJECT 매크로 선언이 있어야 한다.
- setFunction은 const여야 한다.
■ 사용예
<선언>
...
class CustomButton : public QPushButton
{
Q_OBJECT
Q_PROPERTY(int num1 READ getNum1 WRITE setNum1)
...
<사용>
...
CustomButton button("Push Button", 0, "Quit");
button.setProperty("num1", 10);
int value = button.property("num1").toInt();
...
(C#에서처럼 num1 = 10, value = num1과 같이 쓸 수 없어서 불편하다.
또 프로퍼티 값을 얻어낼 때 QVariant 타입으로 나와서 다시 원래 타입으로 변환해줘야 한다.
-> 혹 다른 방법이 있을지도 모르니 더 알아보자...)
※ 참고 자료
http://doc.trolltech.com/3.3/index.html
C++ GUI Programming with Qt3 5장