当前位置: 首页 > news >正文

Qt clicked()、clicked(bool)、toggled(bool)信号的区别和联系

clicked() 信号

所属控件:clicked()信号是QAbstractButton类(及其子类,如QPushButtonQRadioButtonQCheckBox等)的一个信号。clicked信号可以说是许多控件(特别是按钮类控件,如QPushButton)用于通知外部当它们被点击时的一个常用信号。

触发时机当按钮被点击并释放时触发。

连接信号槽方式:

  • connect连接:当用户点击了这样的控件时,clicked信号会被发射(emit),然后任何连接到这个信号的槽(slot)函数都会被调用,允许你响应这个点击事件。
//例如:QPushButton控件pushButton触发clicked事件后,槽函数onButtonClicked会响应这个点击事件。
connect(pushButton, &QPushButton::clicked, this, &MyWidget::onButtonClicked);
  • Qt设计师“跳转槽”机制连接:在对应控件“右键”->“跳转槽”->“clicked()信号”:生成该控件的clicked()信号的槽函数。 
//槽函数名称组成:on_控件名称_信号名称。
void MainWindow::on_pushButton_clicked()
{//动作
}

:无参数。

用途用于响应按钮的点击事件,执行与点击相关的操作,而不考虑按钮的当前状态(如是否选中)。此信号一般用于QPushButton,而不适用于QRadioButton(单选框)QCheckBox(复选框),后者一般通过是否被选中状态执行对应的动作,无参数的信号体现不出状态改变。

 

clicked(bool)信号

所属控件:clicked()信号是QAbstractButton类(及其子类,如QPushButtonQRadioButtonQCheckBox等)的一个信号。

触发时机:当按钮被点击并释放时触发。

连接信号槽方式:

  • connect连接:当用户点击了这样的控件时,clicked(bool)信号会被发射(emit),然后任何连接到这个信号的槽(slot)函数都会被调用,允许你响应这个点击事件。
connect(radioButton, &QRadioButton::clicked(bool), this, &MyWidget::onRadioButtonClicked(bool));
  • Qt设计师“跳转槽”机制连接:在对应控件“右键”->“跳转槽”->“clicked(bool)信号”:生成该控件的clicked(bool)信号的槽函数。 
//槽函数名称组成:on_控件名称_信号名称。
void MainWindow::on_radioButton_clicked(bool checked)
{if(checked){//选中状态的动作}else{//非选中状态的动作}
}

bool类型:是否被选中

用途:用于响应按钮的点击事件,执行与点击相关的操作考虑按钮的当前状态(如是否选中)。此信号一般用QRadioButton(单选框)QCheckBox(复选框),通过是否被选中状态执行对应的动作。

toggled(bool) 信号

toggled(bool)信号与clicked(bool)信号既有相同之处也有不同之处。

clicked(bool)信号和toggled(bool)信号比较

相同:
  • 都是用于响应按钮的点击事件,执行与点击相关的操作考虑按钮的当前状态(如是否选中)。此信号一般用QRadioButton(单选框)QCheckBox(复选框),通过是否被选中状态执行对应的动作。
  • 参数相同,bool类型:是否被选中
  • 所属控件相同,触发时机相同,信号槽的连接均有connect和“跳转槽”两种方式
区别:信号触发的方式不同

toggled(bool)

1)通过用户点击,进行交互时触发信号;

2)通过代码改变控件状态触发信号。如: 

ui->checkBox->setChecked(false); --> ui->checkBox->setChecked(true);
ui->checkBox->setChecked(true); --> ui->checkBox->setChecked(false);

clicked(bool): 只能通过用户,进行交互时触发信号。

注意:

若想通过代码触发toggled(bool)信号,控件状态必须改变。(非选中-->选中 / 选中-->非选中)

http://www.lryc.cn/news/446550.html

相关文章:

  • nginx实现负载均衡的分发策略
  • 【Python】用代码片段掌握Python核心功能
  • JVM 内存模型
  • Linux2.6* 内核默认支持的文件系统
  • PMP--二模--解题--111-120
  • idea 创建多模块项目
  • redis Redis-Cluster常用命令与Redis性能监控
  • 《C++中的随机数生成器:探索随机之美》
  • 为什么推荐使用英文版LabVIEW
  • 【Moveit2】move_group_interface_tutorial中文注释
  • JavaScript window的open和close用法
  • 经典sql题(十四)炸裂函数的恢复
  • 【vue2】组件写法
  • 5G 扬帆新质跃,技术蝶变开新篇-第七届“绽放杯”5G应用征集大赛 5G应用融合技术专题赛圆满收官
  • 3d gaussian splatting公式推导
  • 金属增材制造咋突破?纳米纹理粉末如何助力金属增材制造?
  • openpnp - 为了防止物料操作混乱,做一张物料分布位置图清晰一些
  • 懒人帮美食系统小程序的设计
  • David律所代理Jose Martin幽默水果版权首发维权,尚未TRO
  • 读构建可扩展分布式系统:方法与实践15可扩展系统的基本要素
  • 解决VisualStudio msvsmon.exe远程调试器未启动问题
  • 如果淘汰是注定的,那么读书还有意义吗?
  • Python 中 三种常用的绘图方式 ! ! !
  • 统一回复OneAPI:failed to get gpt-3.5-turbo token encoder的解决办法
  • Flash Attention是怎么做到又快又省显存的?
  • CAN报文ID过滤
  • ELK-05-skywalking监控SpringCloud服务日志
  • 17年数据结构考研真题解析
  • nginx 安装(Centos)
  • 异步编程利器:深入解析 Python 异步并发库 Gevent