1. 程式人生 > >QT4訊號連線與QT5的區別

QT4訊號連線與QT5的區別

QT4訊號連線與QT5的區別


QT4訊號與槽

1. 申明槽函式必須增加public slots

2. SIGNAL SLOT 將函式轉為字串,不進行錯誤檢查(connect中訊號和槽需要增加SIGNAL 和SLOT)

3. 槽函式和訊號一致(引數,返回值),沒有返回值


標頭檔案中申明

public slots:

void MySlot();

void MySlot(int, QString);

原始檔中:

connect(&m_send, SIGNAL(TestSign()), this, SLOT(MySlot()));

connect(&m_send, SIGNAL(TestSign(int, QString)), this, SLOT(MySlot(int, QString)));



QT5訊號與槽:

(1) SIGNAL SLOT 進行錯誤檢查 (2) 槽可以是任意的 成員函式,普通全域性函式和靜態函式 (3) 槽函式和訊號一致(引數,返回值), 沒有返回值

//過載情況下使用 函式指標 void (MyWidget::*signalOne)() = &MyWidget::testSignalOne;
void (MyWidget::*slotOne)() = &MyWidget::testSlotOne; connect(this, signalOne, this, slotOne);
void (MyWidget::*signalTwo)(int) = &MyWidget::testSignalOne(int); void (MyWidget::*slotTwo)(int) = &MyWidget::testSlotOne(int); connect(this, signalTwo, this, slotTwo);

// 非過載可以直接使用 connect(this, &MyWidget::testSignal, this, &MyWidget::testSlot);