Qt5 개발 학습 총결산(一)-신호와 슬롯 메커니즘

3063 단어 QT5

소개하다.


Qt는 신호와 슬롯 메커니즘을 제공하여 인터페이스 조작을 완성하는 응답을 제공하고 임의의 두 Qt 대상 간의 통신을 완성하는 메커니즘이다.그 중에서 신호는 특정한 상황이나 동작에서 촉발되고 슬롯은 신호를 받아들이고 처리하는 함수와 같다.예를 들어 한 창 위젯의 변화 상황을 다른 창 위젯에 알리려면 한 창 위젯이 신호를 보내고 다른 창 위젯의 슬롯이 신호를 받고 해당하는 조작을 받아들여 두 창 위젯 간의 통신을 실현할 수 있다.각 Qt 객체에는 특정 이벤트가 발생하면 신호가 전송되고 신호와 연관된 슬롯이 신호에 응답하며 적절한 처리를 완료하는 미리 정의된 여러 개의 신호와 슬롯이 포함됩니다.하나의 클래스가 계승될 때 이 클래스의 신호와 슬롯도 동시에 계승되고 사용자 정의 신호와 슬롯에 따라 계승될 수 있다.

1. 신호와 슬롯의 연결 방식


1. 하나의 신호가 다른 신호와 연결될 수 있다.

    connect(Object1,SIGNAL(signal1),Object2,SIGNAL(signal1));

Object1을 나타내는 신호 1이 Object2를 트리거할 수 있는 신호 1을 보냅니다.

2. 동일한 신호를 여러 슬롯에 연결할 수 있습니다.

    connect(Object1,SIGNAL(signal2),Object2,SLOT(slot2);
     connect(Object1,SIGNAL(signal3),Object3,SLOT(slot1);

3. 같은 슬롯에 해당하는 여러 개의 신호가 있을 수 있다.

    connect(Object1,SIGNAL(signal2),Object2,SIGNAL(slot2);
     connect(Object3,SIGNAL(signal2),Object2,SIGNAL(slot2);

일반적인 연결 방법

    connect(Object1,SIGNAL(signal),Object2,SLOT(slot));

SIGNAL()과 SLOT()가 정의한 매크로는 매개변수의 C 언어 스타일 문자열(const char*)을 반환합니다.따라서 다음과 같은 두 가지가 동일합니다.
    connect(button,SIGNAL( clicked() ),this,SLOT( showArea() );
    connect(button,"clicked()",this,"showArea()" );

2. 신호와 슬롯의 장점


1. 유형 안전


신호 매개 변수 유형과 매개 변수 개수는 슬롯 매개 변수 유형과 개수와 같지만 슬롯의 매개 변수 개수는 신호 매개 변수 개수보다 적을 수 있으며 부족한 매개 변수는 신호 매개 변수의 마지막 매개 변수나 몇 개 매개 변수여야 한다.상술한 조건을 만족시키지 못하면 오보할 것이다.

2. 느슨한 결합


창설 후 신호를 자극하는 Qt 대상은 어느 대상의 어느 슬롯이 신호에 연결되었는지 알 필요가 없다. 마찬가지로 대상의 슬롯도 어느 슬롯이 자신과 연결되었는지 알 수 없다. 일단 신호와 슬롯이 연결되면 Qt는 적당한 슬롯이 호출되고 관련 대상이 삭제되더라도 프로그램이 닫히지 않는다.하나의 클래스가 신호와 슬롯을 지원하려면 QObject나 QObject의 하위 클래스로부터 계승해야 합니다. Qt의 신호와 슬롯 메커니즘은 모델에 대한 사용을 지원하지 않습니다.

3. 신호와 슬롯 메커니즘의 효율


유연성을 증가시켰기 때문에 명성이 자자한 리셋 함수에 비해 신호와 슬롯의 운행 메커니즘 속도가 좀 느리다. 통상적으로 하나의 신호를 전달함으로써 슬롯 함수를 호출하는 것은 비허함수를 직접 호출하는 것보다 10배 느리다.원인은 주로
  • 수용 대상을 포지셔닝해야 한다
  • 모든 관련(예를 들어 한 신호가 여러 슬롯에 대한 것)을 안전하게 훑어본다
  • 다중 스레드 시 신호가 줄을 서서 기다려야 할 수 있음
  • 좋은 웹페이지 즐겨찾기