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);