| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| 8 | 9 | 10 | 11 | 12 | 13 | 14 |
| 15 | 16 | 17 | 18 | 19 | 20 | 21 |
| 22 | 23 | 24 | 25 | 26 | 27 | 28 |
- 크롤링
- 네이버 블로그
- 서이추 매크로
- node.js
- 실시간 웹소켓 서버
- 실시간
- 크롤러
- Selenium 네이버 블로그
- 서로이웃추가 자동
- 국세청
- amqplib
- Selenium
- 웹소켓 서버
- kwoss2341
- 웹소켓
- 네이버 블로그 이웃추가 자동
- 셀레니움
- socket.io
- rabbitmq
- 스크래퍼
- Java
- Node
- 서이추 자동
- nodejs
- 서로이웃추가 매크로
- Today
- Total
defaultK
[Qt 프로그래밍] Signal 과 Slot 이해하기 본문
doc.qt.io/qt-5/signalsandslots.html
Signals & Slots | Qt Core 5.15.2
Signals & Slots Signals and slots are used for communication between objects. The signals and slots mechanism is a central feature of Qt and probably the part that differs most from the features provided by other frameworks. Signals and slots are made poss
doc.qt.io

Qt의 중요한 특징 signal 과 slot이다
그림과 같이 Object1에 signal1이 발생하면 Object2의 slot1이 구동된다.
connect를 이용하여 connect(Object1,signal1,Object2,slot2);
Object1의 signal1과 Object2의 slot2을 연결한다.
예시:
#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); //slot 정의
signals:
void valueChanged(int newValue); //signal 정의
private:
int m_value;
};
QObject를 상속받은 Counter 클래스를 정의해 준다.
Counter 클래스의 signal과 slot역시 정의해 준다.
void Counter::setValue(int value)
{
if (value != m_value) {
m_value = value;
emit valueChanged(value);
}
}
setValue가 일어나면 valueChanged signal이 발생한다.
Counter a, b;
QObject::connect(&a, &Counter::valueChanged,
&b, &Counter::setValue);
a.setValue(12); // a.value() == 12, b.value() == 12
b.setValue(48); // a.value() == 12, b.value() == 48
main에서 Counter 객체 a,b를 생성한뒤 a의 signal(valueChanged)와 b의 slot(setValue)를 연결해 준다.
a.setValue(12)를 통해 a클래스의 setValue() 메소드에서 signal(valueChanged)이 발생하고
a의 signal이 발생함에 따라 b의 setValue() slot이 구동되어 b.value()==12가 되게 된다.
반대로 b.setValue(48)을 하면 connect는 a object의 signal과 b object의 slot만 연결되어 있기 때문에
b의 m_value값만 바뀌고 a의 값은 변하지 않는다.
'Qt 프로그래밍 > Basic Qt' 카테고리의 다른 글
| [Qt 프로그래밍] QProcess 클래스를 이용한 파일 실행 (1) | 2021.03.20 |
|---|---|
| [Qt 프로그래밍] qml, cpp 간 signal , slot 연결 (0) | 2021.02.24 |
| [Qt 프로그래밍] 크로스컴파일 환경(라즈베리파이)에서 qml 과 cpp object 연동하기 (0) | 2021.02.24 |
| [Qt 프로그래밍] QML 상대 위치지정 속성 Positioning with Anchors (0) | 2021.02.22 |
| [Qt 프로그래밍] QML, Rectangle 위치 지정 (0) | 2021.02.22 |