Qt connect()的第五种重载[=](){}

发布时间:2024-11-12 01:40

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. Sonmez
errcode = 40163; errmsg = “code been used”(提供一种解决思路)
智慧生活App如何添加智能家居
八种享受生活每一天的简单方法
appium===报错adb server version (31) doesn’t match this client (39); killing…的解决办法
50岁以后的夫妻生活,最重要的幸福秘诀,都藏在“五五定律”里
自驾出游还是开B级车舒服,看看这三款,安全舒适,省油耐用
分隔法:在工作中划分心理界限的五种策略
掌握好这五种时间,生活就顺了
健康家庭生活的五种方式

随便看看