Qt笔记(8) 信号与槽

Qt4 信号与槽

信号与槽关联是用 QObject::connect() 函数实现的,其基本格式是:

QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));

connect() 是 QObject 类的一个静态函数,而 QObject 是所有 Qt 类的基类,在实际调用时可以忽略前面的限定符,所以可以直接写为:

connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));

//信号和槽无参数时,也要加括号;有参数传递时,可以只填数据类型。

connect(&subw,SIGNAL(mySignal()),this,SLOT(executeSlot()));
connect(&subw,SIGNAL(mySignal(int,QString)),this,SLOT(executeSlot2(int,QString)));

Qt5 信号与槽

//qt5,当信号函数无重载时,可以使用函数指针形式关联,而且无需出现函数参数。
//connect(&subw,&subWiget::mySignal,this,&MainWindow::executeSlot);

//qt5 pro文件中 加 CONFIG+=C++11,Lambad 表达式
QPushButton *b3 = new QPushButton(this);
b3->setText(“Lambad 表达式”);
b3->move(150,10);
connect(b3,&QPushButton::released,
b3 mutable
{
b3->setText(“通过匿名表达式修改了内容”);
qDebug()<<“触发了匿名槽函数,pro文件中要加 CONFIG+=C++11”;
});

Qt::ConnectionType type

ConstantDescription
Qt::AutoConnection自动连接:(默认值)如果信号在接收者所依附的线程内发射,则等同于直接连接。如果发射信号的线程和接受者所依附的线程不同,则等同于队列连接
Qt::DirectConnection直接连接:当信号发射时,槽函数将直接被调用。无论槽函数所属对象在哪个线程,槽函数都在发射信号的线程内执行。
Qt::QueuedConnection队列连接:当控制权回到接受者所依附线程的事件循环时,槽函数被调用。槽函数在接收者所依附线程执行。也就是说:这种方式既可以在线程内传递消息,也可以跨线程传递消息
Qt::BlockingQueuedConnection与Qt::QueuedConnection类似,但是会阻塞等到关联的slot都被执行。这里出现了阻塞这个词,说明它是专门用来多线程间传递消息的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值