connect(sender, &Sender::valueChanged,
        receiver, &Receiver::updateValue);

新的写法通过静态函数指针充分地利用了编译器的特性方便了编程工作特别是查错的进行,(而且也减少了对宏定义的依赖?)

而且利用函数指针进行绑定的话可以没有slots关键字,非常自由

对于第二个和第四个参数的,只要将它理解成静态的指针地址就好了。所以才会直接调用了sender类的命名空间,和在这之下的函数名称

//以下两句话是相同的效果,不如试着把之前写过的代码全部改成第二种形式?
connect(ui->BtnBlack, SIGNAL(clicked()),this, SLOT(on_setTextFontColor()));
connect(ui->BtnBlack, &QPushButton::clicked,this, &ExampleThreeWidget::on_setTextFontColor);

让我们看看其他人对此的评价:(以下均来自文末链接...)

Qt 5之前信号和槽语法的问题

虽然通常情况下都可以正常工作,我们还是发现了如下问题:

(注:第二个问题在搜索中真的能发现)

新语法:使用函数指针

在即将到来的Qt 5中提供了一套新的语法。之前的语法依然可以使用,但是现在,我们有了全新的方式:

connect(sender, &Sender::valueChanged,

        receiver, &Receiver::updateValue);

哪一种方式更酷可能取决于个人喜好。但大家会更快的适应新方式。

现在让我们先远离美学视角,来看看新语法有什么好处:

如果信号或者槽的名字的拼写发生了错误,或者槽函数的参数与信号的不一致,你会在编译期就得到一个错误。

这肯定会在重构、或者修改信号或槽函数的名字时节省很多时间。

另一个好处是,如果我们少了Q_OBJECT宏,可以利用static_cast返回更友好的错误信息。