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_OBJECT
 
public:
    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_OBJECT
 
public:
   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");
    }
}
  • 4
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值