Qt connect()的第五种重载[=](){}
Qt connect()的第五种重载[=](){}
进行网络相关编程时,需要使用信号和槽,碰到一个={}作为槽函数的语句。
【用途】实现函数内部的信号接收。
【原语句】
connect(tcpSocket, &QTcpSocket::readyRead,
[=](){
//从通信套接字中取出内容
QByteArray array = tcpSocket->readAll();
qDebug()<<array<<endl;
}
);
【函数原型】
static(qmetaobject-connection.html) QObject::connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
测试的简单例子
connection.h
#ifndef CONNECTION_H
#define CONNECTION_H
#include <QObject>
#include<QDebug>
class Connection:public QObject
{
Q_OBJECT
public:
Connection();
void test_emit_signal();
public slots:
void test_slot();
signals:
void test_signal();
};
#endif // CONNECTION_H
connection.cpp
#include "connection.h"
Connection::Connection()
{
//connect(this,SIGNAL(test_signal()),this,SLOT(test_slot()));出错
connect(this,&Connection::test_signal,[=](){
qDebug()<<"in slot"<<endl;
//信号需要用指针的形式,而不能用SIGNAL()的形式
}
);
this->test_emit_signal();
}
void Connection::test_slot(){
qDebug()<<"signal received !"<<endl;
}
void Connection::test_emit_signal(){
emit test_signal();
}
main.c
#include <QCoreApplication>
#include"connection.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
Connection *tmp=new Connection();
return a.exec();
}
值得注意的是用这种方式处理时,信号需要以指针形式书写。
网址:Qt connect()的第五种重载[=](){} https://www.yuejiaxmz.com/news/view/42894
相关内容
提高学习效率方法论:十步学习法—John Z. Sonmezerrcode = 40163; errmsg = “code been used”(提供一种解决思路)
智慧生活App如何添加智能家居
八种享受生活每一天的简单方法
appium===报错adb server version (31) doesn’t match this client (39); killing…的解决办法
50岁以后的夫妻生活,最重要的幸福秘诀,都藏在“五五定律”里
自驾出游还是开B级车舒服,看看这三款,安全舒适,省油耐用
分隔法:在工作中划分心理界限的五种策略
掌握好这五种时间,生活就顺了
健康家庭生活的五种方式