!Ъ: тык
Ъ:
Старый вариант останется доступен.
Новый вариант разрешается на этапе компиляции (а не исполнения), и работает не со строками.
Было:
connect(sender, SIGNAL(valueChanged(QString,QString)), receiver, SLOT(updateValue(QString)));
Стало:
connect(sender, &Sender::valueChanged, receiver, &Receiver::updateValue );
Можно так:
connect(sender, &Sender::valueChanged,
tr1::bind(receiver, &Receiver::updateValue, "senderValue", tr1::placeholder::_1) );
Или так:
connect(sender, &Sender::valueChanged, [=](const QString &newValue) {
receiver->updateValue("senderValue", newValue);
});
Можно писать код прямо в коннектах:
void doYourStuff(const QByteArray &page)
{
QTcpSocket *socket = new QTcpSocket;
socket->connectToHost("qt.nokia.com", 80);
QObject::connect(socket, &QTcpSocket::connected, [socket, page] () {
socket->write(QByteArray("GET " + page + "\r\n"));
});
QObject::connect(socket, &QTcpSocket::readyRead, [socket] () {
qDebug()<< "GOT DATA "<< socket->readAll();
});
QObject::connect(socket, &QTcpSocket::disconnected, [socket] () {
qDebug()<< "DISCONNECTED ";
socket->deleteLater();
});
QObject::connect(socket, static_cast<void (QTcpSocket::*)(QAbstractSocket::SocketError)>(&QAbstractSocket::error), [socket] (QAbstractSocket::SocketError) {
qDebug()<< "ERROR " << socket->errorString();
socket->deleteLater();
});
}