正常连接方式
//QT4官方用列QLabel *label = new QLabel;QScrollBar *scrollBar = new QScrollBar;QObject::connect(scrollBar, SIGNAL(valueChanged(int)),label, SLOT(setNum(int)));
//QT5官方用列QLabel *label = new QLabel;QLineEdit *lineEdit = new QLineEdit;QObject::connect(lineEdit, &QLineEdit::textChanged,label, &QLabel::setText);
有重载的信号槽 连接方式
//Qt4在连接有重载信号槽时,直接在原有基础上写上形参数即可。
//Qt5在连接有重载信号槽时,需要使用函数指针,提前绑定重载信号和槽的地址,区别是有参还是无参信号槽。
最后一行,使用有参的信号 连接 无参的槽函数。
两者区别
QT5连接方式:
缺点:使用稍复杂
优点:connect()的第2和第4参数传递的是地址,编译器在编译过程中会对数据的正确性进行检测。如信号名写错,或参数写错,会报错。
QT4连接方式:
优势:使用简单
缺点:在进行信号槽连接的时候,信号槽函数通过宏SIGNAL和SLOT转换为字符串类型。宏函数内部的数据不会被检测,传错数据编译器不会报错,且运行起来发现问题不容易定位。
总结
推荐使用 QT5 方式进行信号槽连接。