当前位置: 首页> 文旅> 酒店 > Qt QPushButton::clicked和QPushButton::click的区别

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

时间:2025/7/11 0:34:34来源:https://blog.csdn.net/love_dear/article/details/141191687 浏览次数:0次

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");}
}
关键字:Qt QPushButton::clicked和QPushButton::click的区别

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: