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

Qt QPushButton::clicked和QPushButton::click的区别

QPushButton::clicked是一个信号,当按钮被用户点击时发出。它可以携带一个布尔值参数,表示是否按钮被按下
QPushButton::click是一个槽,当调用它时,会模拟按钮被点击的效果,并发出clicked信号
两个示例帮助理解

一个示例,演示了如何将两个按钮的clicked信号连接到同一个槽函数,并根据参数判断哪个按钮被点击

//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QPushButton>
#include <QLabel>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:QPushButton *button1;QPushButton *button2;QLabel *label;private slots:void onButtonClicked(bool checked);
};
#endif // MAINWINDOW_H//mainwindow.cpp
#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{button1 = new QPushButton(this);button2 = new QPushButton(this);label = new QLabel(this);button1->setText("Button 1");button2->setText("Button 2");label->setText("No button clicked");button1->setGeometry(100, 100, 100, 50);button2->setGeometry(300, 100, 100, 50);label->setGeometry(200, 200, 150, 50);connect(button1,SIGNAL(clicked(bool)),this,SLOT(onButtonClicked(bool)));connect(button2,SIGNAL(clicked(bool)),this,SLOT(onButtonClicked(bool)));
}void MainWindow::onButtonClicked(bool checked)
{if(sender() == button1) //判断发送者是哪个按钮{label->setText("Button 1 clicked");}else if(sender() == button2){label->setText("Button 2 clicked");}
}MainWindow::~MainWindow()
{
}

另一个示例,演示了如何在自定义的槽函数中使用QPushButton::click来模拟按钮被点击,并弹出对话框

//mainwindow.h
#ifndef MAINWINDOW_H
#define MAINWINDOW_H#include <QMainWindow>
#include <QPushButton>
#include <QMessageBox>class MainWindow : public QMainWindow
{Q_OBJECTpublic:MainWindow(QWidget *parent = nullptr);~MainWindow();private:QPushButton* button;private slots:void on_button_clicked();
};
#endif // MAINWINDOW_H//mainwindow.cpp
#include "mainwindow.h"MainWindow::MainWindow(QWidget *parent): QMainWindow(parent)
{button = new QPushButton(this);button->setText("Click Me");button->setGeometry(200,200,80,40);connect(button,SIGNAL(clicked()),this,SLOT(on_button_clicked()));
}void MainWindow::on_button_clicked()
{button->click(); //模拟按钮被点击QMessageBox::information(this,"Message","You clicked the button!");
}MainWindow::~MainWindow()
{
}

原文链接:https://www.cnblogs.com/wozhuyinghao/p/17245726.html

补充笔记:

qt里的pushButton中的clicked(bool);用法

使用clicked(bool);首先需要设置pushButton的setCheckable属性,不设置的话pushButton就像手机的屏幕开关,按一下屏幕亮,再按一下屏幕灭;设置后pushButton就像常见的灯的开关,按下面是开,按上面是关。

默认是不设置的

ui->pushButtonPortSwitch->setCheckable(true);

再根据bool变量操作即可了

/*按钮槽函数*/
void Widget::on_pushButtonPortSwitch_clicked(bool checked)
{if(checked){ui->pushButtonPortSwitch->setText("close");}else{ui->pushButtonPortSwitch->setText("open");}
}

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 平安城市/雪亮工程现状及需求分析:EasyCVR视频汇聚平台助力雪亮工程项目建设
  • 短信软件如何高效处理空号问题
  • Python 实现行为驱动开发 (BDD) 自动化测试详解
  • 代码随想录算法训练营第四十三天 | 动态规划 part10
  • CentOS7下载与安装 即配置网卡
  • 技术分享-商品篇-购物车【加购功能】(八)
  • Java设计模式-原型模式-一次性理解透
  • 看demo学算法之 卷积神经网络(CNN)
  • 鸿蒙原生应用元服务开发-初识仓颉开发语言
  • Unity(2022.3.38LTS) - 输入
  • 企业电子招投标采购系统——功能模块功能描述+数字化采购管理 采购招投标
  • 【C++ 第十章】继承
  • php防止页面重复刷新或者重复提交
  • Excel表格使用IF条件判断
  • 介绍一下react中虚拟dom和diff算法
  • (三)从jvm层面了解线程的启动和停止
  • __proto__ 和 prototype的关系
  • bearychat的java client
  • centos安装java运行环境jdk+tomcat
  • const let
  • HTTP 简介
  • JAVA_NIO系列——Channel和Buffer详解
  • java正则表式的使用
  • js操作时间(持续更新)
  • JWT究竟是什么呢?
  • leetcode98. Validate Binary Search Tree
  • LeetCode算法系列_0891_子序列宽度之和
  • Linux中的硬链接与软链接
  • Mithril.js 入门介绍
  • Object.assign方法不能实现深复制
  • Redash本地开发环境搭建
  • Sass Day-01
  • tweak 支持第三方库
  • 分享一个自己写的基于canvas的原生js图片爆炸插件
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 首页查询功能的一次实现过程
  • 我的zsh配置, 2019最新方案
  • ionic异常记录
  • Spring Batch JSON 支持
  • Spring第一个helloWorld
  • ​中南建设2022年半年报“韧”字当头,经营性现金流持续为正​
  • #Datawhale AI夏令营第4期#多模态大模型复盘
  • (152)时序收敛--->(02)时序收敛二
  • (待修改)PyG安装步骤
  • (翻译)Quartz官方教程——第一课:Quartz入门
  • (十五)Flask覆写wsgi_app函数实现自定义中间件
  • (转载)PyTorch代码规范最佳实践和样式指南
  • **PHP分步表单提交思路(分页表单提交)
  • .net mvc 获取url中controller和action
  • .NET 线程 Thread 进程 Process、线程池 pool、Invoke、begininvoke、异步回调
  • .NET/C# 在 64 位进程中读取 32 位进程重定向后的注册表
  • .net6 core Worker Service项目,使用Exchange Web Services (EWS) 分页获取电子邮件收件箱列表,邮件信息字段
  • .net快速开发框架源码分享
  • @converter 只能用mysql吗_python-MySQLConverter对象没有mysql-connector属性’...
  • [ C++ ] STL---string类的使用指南