QT4訊號連線與QT5的區別
阿新 • • 發佈:2019-01-07
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::*signalTwo)(int) = &MyWidget::testSignalOne(int); void (MyWidget::*slotTwo)(int) = &MyWidget::testSlotOne(int); connect(this, signalTwo, this, slotTwo);
// 非過載可以直接使用 connect(this, &MyWidget::testSignal, this, &MyWidget::testSlot);