IDE/QT Creator

[QT Creator] Signal & Slot

쩡 (개발꿈나무) 2019. 9. 14. 17:58
  • QT의 핵심 메커니즘으로 객체간 통신에 이용
  • connect 함수를 이용해 signal과 slot을 연결
    • 이벤트 발생 오브젝트와 이벤트 핸들러 오브젝트간에 아무런 연관관계 없이 서로 참조하지 않으면서 사용 가능
  • 시그널이 발생하면 슬롯 함수 실행
  • 1(시그널) : N(슬롯)의 연결 가능
  • 참고

Example

#include <QObject>

class Counter : public QObject
{
	Q_OBJECT

public:
	Counter()
	{
		m_value = 0;
	}
	int value() const
	{
		return m_value;
	}

public slots:
	void setValue(int value);

signals:
	void valueChanged(int newValue);

private:
	int m_value;
};

setValue에서 변경 값을 받고 시그널을 발생 → 두 개의 오브젝트(a, b)를 connect로 연결 → a에서 값이 변경되면 valueChanged 시그널이 발생되어 b의 setValue 함수를 실행

void Counter::setValue(int value)
{
	if(value != m_value)
	{
		m_value = value;
		emit valueChanged(value);
	}
}
Counter a, b;
QObject::connect(&a, &Counter::valueChanged,
				 &b, &Counter::setValue);

a.setValue(12);	// a=12, b=12
b.setValue(48);	// a=12, b=48

'IDE > QT Creator' 카테고리의 다른 글

[QT Creator 5.14] Ubuntu에 QT Creator 설치하기 - 수정 중  (1) 2020.12.24
[QT Creator] 회사에서 사용 시 License 비용  (1) 2020.12.21
[QT Creator] Copy Project  (0) 2019.09.14
[QT Creator] 프로젝트 생성  (0) 2019.09.14
설치  (0) 2019.09.14