信号与槽函数机制的三种体现

首先先了解一下什么是信号和槽函数机制?

信号和槽函数是QT的核心机制,要精通QT编程就必须对信号和槽有所了解。信号和槽是一种高级接口,应用于对象之间的通信,它是QT的核心特性,也是QT区别于其他工具包的重要地方。信号和槽是 QT 自行定义的一种通信机制,它独立于标准的 C/C++ 语言,因此要正确的处理信号和槽,必须借助一个称为 moc(Meta Object Compiler)的 QT 工具,该工具是一个 C++ 预处理程序,它为高层次的事件处理自动生成所需要的附加代码。

现在简单讲解一下比较常用的三种方式去体现。

connect使用指针(c++98标准)

首先定义一个按钮控件pushbutton,并定义槽函数去实现myslot();

QPushButton *m_pPushButton = nullptr;

m_pPushButton = new QPushButton("click",this);

connect(m_pPushButton ,&QPushButton::released,this,&MainWidget::soltClicked);
void MainWindow::slotClicked()
{
    qDebug()<<"clicked pushbutton";
}

② lambda表达式 (C++11标准)

connect(m_pPushButton,&QPushButton::released,[this](){
	qDebug()<<"clicked pushbutton";
})

 //[ ]lambda标识符,代表把外部变量传进来,如果不传是不能被使用的

//[var]表示值传递方式捕捉变量var;

//[&var]表示引用传递捕捉变量var;

//[=]表示值传递方式捕捉所以父作用域的变量(包括this);

//[this]表示值传递方式捕捉当前的this指针;

//[&]表示引用值传递方式捕捉所有父作用域的变量(包括this);

//()参数列表

使用宏 (C++ 98标准)

connect(m_pPushButton,SIGNAL(Clicked(bool)),this,SLOT(soltClicked()));

建议:由于使用宏并不会做错误检查,所以不建议使用

结果显示都能达到一样的效果:

:Clicked pushbutton

 最后,希望能有效的帮助你理解信号与槽函数机制。

 

 

 

 

 

 

 

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值