Qt学习 | 您所在的位置:网站首页 › 信号和槽的用法和区别图片大全 › Qt学习 |
程序的响应在qt中是通过信号与槽机制实现的。 两个基本概念 信号(signal):特定情况下被发射的一种通告;(例如:按钮被按下,光标移动,文本被编辑等等) 槽(slot):对信号作出相应的函数,也叫槽函数。 下面以按钮为例,介绍几种信号与槽的方式的实现。 1.右击-转到槽 在ui设计界面右击按钮,选择转到槽,如果选择click(),则表示新建了一个按下该按钮的槽函数,qt会自动生成一个空的函数体,只需要在函数体里写代码即可。 private slots: void on_create_maze_button_clicked(); void on_find_path_button_clicked();槽函数在.h文件中的声明需要放在slots:里面,并且拥有特定的名称。 2.使用connect函数关联 connect函数的作用是连接信号与槽,它的四个参数分别为 谁发出信号 发出什么信号 谁处理信号 怎么处理 信号和槽函数在参数里有两种写法: 1) connect(ui->cmdEdit,SIGNAL(returnPressed()),this,SLOT(on_commitButtonClicked()));2) connect(ui->cmdEdit,&QBushButton::clicked,this,&Widget::on_cancelButton_clicked);3.直接使用lambda槽函数 有时函数语句很短,没必要再写一个函数体,可以用lambda函数的形式。 connect(ui->browseButton,&QPushButton::clicked,[this]() { QMessageBox::information(this,"info","clicked"); });补充:Lambda表达式 [捕获参数] (参数表) -> 返回类型{函数体} lambda表达式可以赋值给一个函数指针,且当返回类型很明确时,可以省略返回类型的声明。 |
CopyRight 2018-2019 实验室设备网 版权所有 |