Qt의 신호조 (1: 기본 응용)

2049 단어 QT 어플리케이션
신호 슬롯 연결 인스턴스
1: 신호조 사용 튜토리얼 코드
//   
class MyClass : public QObject 
{ 
    //Q_OBJECT   ,          QObject    ,             
    Q_OBJECT 
signals: //                ,      
    void mySignal();
    void mySignal_2(QString arg1);
private slots:
    void myslot();
    void myslot(QString arg1);
};

//cpp  
MyClass::MyClass(){
    //              
    connect(this, SIGNAL(mySignal()), this, SLOT(myslot()), Qt::AutoConnection);
    connect(this, SIGNAL(mySignal_2(QString)), this, SLOT(myslot(QString)), Qt::AutoConnection);
    //             
    connect(this, SIGNAL(mySignal_2(QString)), this, SLOT(myslot()), Qt::AutoConnection);

//     
    emit myslot();
    QString arg;
    emit myslot(arg);
}

void MyClass::myslot(){

}
void MyClass::myslot(QString arg1){
}


 
2: 신호조의 연결
//         :
//       :      ,     ,   ,            
connect(QObject*sender, QObject::signal, QObject*receiver, QObject::method,Qt::ConnectionType type = Qt::AutoConnection) 

//         :       ,     :SIGNAL(),SLOT()     
connect(QObject*sender, SIGNAL(signal()), QObject*receiver, SLOT(method()), Qt::ConnectionType type = Qt::AutoConnection) 

//         :      lambda   
connet(QObject *sender,QObject::signal,[&](){;})

3: 신호조 연결의 다섯 번째 매개 변수 소개
연결 유형 매개변수
소개하다.
Qt::AutoConnection
자동 연결: 기본 방식입니다.신호가 보내는 스레드와 나쁜 대상은 한 스레드에서 DirectConnection과 같고, 서로 다른 스레드에서는QueuedConnection과 같다
Qt::DirectConnection
직접 연결: 슬롯 함수를 직접 호출하는 것과 같지만 신호가 보내는 라인과 슬롯의 대상이 한 라인이 없을 때 슬롯 함수는 보내는 신호에서 실행된다.
Qt::QueuedConnection
대기열 연결: 내부는postEvent를 통해 이루어집니다.실시간으로 호출되지 않습니다. 슬롯 함수는 슬롯 함수 대상이 있는 라인에서 영원히 실행됩니다.만약 신호 파라미터가 인용 형식이라면, 따로 한 부를 복사할 것입니다.노정은 안전하다.
Qt::BlockingQueuedConnection
연결 차단: 이 연결 방식은 신호가 보내는 라인과 슬롯 함수의 대상이 더 이상 한 라인에서만 사용할 수 있습니다.신호량 + postEvent를 통해 이루어집니다.실시간으로 호출되지 않습니다. 슬롯 함수는 슬롯 함수 대상이 있는 라인에서 영원히 실행됩니다.그러나 신호를 보낸 후 현재 라인이 막혀 슬롯 함수 실행이 끝난 후에야 계속 실행됩니다.
Qt::UniqueConnection
중복 연결을 방지합니다.현재 신호와 슬롯이 연결되어 있으면 더 이상 연결되지 않습니다.

좋은 웹페이지 즐겨찾기