Qt5 connect 新语法

传统:

connect(showBtn,SIGNAL(clicked),this,SLOT(show()));


新式:(使用模板来实现的,其实例化是有编译出气完成的)


connect(showBtn,&QPushButton::clicked,this,&Myapp::show);

【新语法特点】 编译期检查信号与槽是否存在,(旧语法直接忽略,运行时候警告),参数类型检查,QOBJECT 是否存在,信号可以跟普通的函数,类的普通成员函数,lambda函数连接,(而不局限于传统的信号函数跟槽函数了),其参数是可以是使用typedefy或者是不同类型的namespace specifier,允许一些类型的转换(即信号和槽函数参数类型不必完全匹配【隐式强制类型转换】)


当然也有很复杂的使用C++11中的lambda配合新式的conenct.

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
QT5中的connect函数是一个非常重要的函数,它用于在对象之间建立信号和槽的连接,实现对象之间的通信。connect函数的基本语法如下: ```cpp connect(sender, signal, receiver, slot); ``` 其中,sender是发出信号的对象,signal是信号的名称,receiver是接收信号的对象,slot是槽的名称。 下面是connect函数的一些应用场景: 1. 在QT5中使用QPushButton的clicked()信号来响应按钮的点击事件,示例如下: ```cpp QPushButton *button = new QPushButton("Click me"); connect(button, SIGNAL(clicked()), this, SLOT(onButtonClicked())); ``` 2. 在QT5中使用QTimer的timeout()信号来定时执行任务,示例如下: ```cpp QTimer *timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(onTimerTimeout())); timer->start(1000); // 1秒钟触发一次 ``` 3. 在QT5中使用QNetworkAccessManager的finished()信号来处理网络请求,示例如下: ```cpp QNetworkAccessManager *manager = new QNetworkAccessManager(this); connect(manager, SIGNAL(finished(QNetworkReply*)), this, SLOT(onNetworkReply(QNetworkReply*))); QNetworkRequest request(QUrl("http://www.example.com")); manager->get(request); ``` 4. 在QT5中使用QThread的finished()信号来处理线程结束事件,示例如下: ```cpp QThread *thread = new QThread(this); MyWorker *worker = new MyWorker(); worker->moveToThread(thread); connect(thread, SIGNAL(started()), worker, SLOT(doWork())); connect(worker, SIGNAL(finished()), thread, SLOT(quit())); connect(worker, SIGNAL(finished()), worker, SLOT(deleteLater())); connect(thread, SIGNAL(finished()), thread, SLOT(deleteLater())); thread->start(); ``` 这些示例只是connect函数的一些应用场景,实际上,connect函数可以用于任何需要建立信号和槽连接的场景。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值