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()
{
}
posted @   朱英浩  阅读(1369)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
点击右上角即可分享
微信分享提示