QT4和 QT5 槽函数连接的区别

正常连接方式

//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在连接有重载信号槽时,需要使用函数指针,提前绑定重载信号和槽的地址,区别是有参还是无参信号槽。

QT4和 QT5 槽函数连接的区别_第1张图片
最后一行,使用有参的信号 连接 无参的槽函数。

两者区别

QT5连接方式:

缺点:使用稍复杂
优点:connect()的第2和第4参数传递的是地址,编译器在编译过程中会对数据的正确性进行检测。如信号名写错,或参数写错,会报错。

QT4连接方式:

优势:使用简单
缺点:在进行信号槽连接的时候,信号槽函数通过宏SIGNALSLOT转换为字符串类型。宏函数内部的数据不会被检测,传错数据编译器不会报错,且运行起来发现问题不容易定位。

总结

推荐使用 QT5 方式进行信号槽连接。

你可能感兴趣的:(QT,qt)