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

clicked() 信号

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

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

连接信号槽方式:

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

:无参数。

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

clicked(bool)信号

**所属控件:**clicked()信号是QAbstractButton类(及其子类,如QPushButton、QRadioButton、QCheckBox等)的一个信号。

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

连接信号槽方式:

  • connect连接:当用户点击了这样的控件时,clicked(bool)信号会被发射(emit),然后任何连接到这个信号的槽(slot)函数都会被调用,允许你响应这个点击事件。
cpp 复制代码
connect(radioButton, &QRadioButton::clicked(bool), this, &MyWidget::onRadioButtonClicked(bool));
  • Qt设计师"跳转槽"机制连接:在对应控件"右键"->"跳转槽"->"clicked(bool)信号":生成该控件的clicked(bool)信号的槽函数。
cpp 复制代码
//槽函数名称组成: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)通过代码改变控件状态触发信号。如:

cpp 复制代码
ui->checkBox->setChecked(false); --> ui->checkBox->setChecked(true);
ui->checkBox->setChecked(true); --> ui->checkBox->setChecked(false);

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

注意:

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

相关推荐
eclipsercp1 小时前
PyQt5:Python GUI开发的超级英雄
开发语言·python·qt
老汉忒cpp2 小时前
Qt-窗口相关
开发语言·qt
小gpt&12 小时前
实现qt拖拽显示或者播放
数据库·qt·音视频
不烦下雨c17 小时前
[Qt从入门到精通] 信号和槽
开发语言·数据库·qt
cs82198483117 小时前
QT 设置高DIP支持多分屏幕,window缩放比例问题等
开发语言·qt·依赖倒置原则
qq7621182221 小时前
arm Rk1126 编译Qt工程报错: Could not find qmake spec
arm开发·qt
IT19951 天前
Qt笔记-获取HTTP的POST请求提交的数据时需要注意的地方(2024-09-02)
笔记·qt·http
重生之我是数学王子1 天前
QT简易项目 数据库可视化界面 数据库编程SQLITE QT5.12.3环境 C++实现
数据库·c++·qt
WALL-EC1 天前
VS2019+QT5.12 创建UI(Dialog窗体)界面自动生成.h和cpp文件
开发语言·qt·ui
沥川同学1 天前
跨平台应用开发框架(1)----Qt(组件篇)
c++·qt·udp·线程·tcp·qt5·qt6.3