首页 > 系统相关 >【linux开发-Qt】-信号与槽机制

【linux开发-Qt】-信号与槽机制

时间:2024-10-10 17:17:50浏览次数:12  
标签:函数 public connect 信号 linux MainWindow Qt

一、什么是信号与槽机制

信号(signal),就是在特定情况下被发射的事件,例如 PushButton 最常见的信号就是鼠标
单击时发射的 clicked() 信号。

槽(Slot)就是对信号响应的函数。槽就是一个函数,与一般的 C++函数是一样的,可以
定义在类的任何部分(public、private 或 protected),可以具有任何参数,也可以被直接调用。

槽函数与一般的函数不同的是:槽函数可以与一个信号关联,当信号被发射时,关联的槽函数
被自动执行。

二、怎么实现

信号与槽关联是使用QObject::connect() 函数实现的,基本格式为:

QObject::connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));

其中:

1、connect()是QObiect类的一个静态函数,QObiect是所有Qt类的基类

在实际使用中可以直接写为:

connect(sender, SIGNAL(signal()), receiver, SLOT(slot()));

2、sender是发射信号的对象名称,signal()是信号名称,receiver是接收信号的对象名称,slot()是槽函数的名称。

注意:在使用信号与槽的类中,必须在类的定义中加入宏 Q_OBJECT

三、实际使用

1、创建信号

信号只需声明,无需定义。所以我们只需要在 mianwindow.h 里声明信号即可

class MainWindow : public QMainWindow
{
     Q_OBJECT

 public:
     MainWindow(QWidget *parent = nullptr);
     ~MainWindow();

 signals:
     /* 声明一个信号,只需声明,无需定义 */
     void pushButtonTextChanged();

 };

2、创建槽

直接在 mianwindow.h 里直接声明槽,在 mianwindow.cpp 里实现槽的定义

槽的特点:

1、槽可以是任何成员函数、普通全局函数、静态函数

2、槽函数和信号的参数和返回值要一致

class MainWindow : public QMainWindow
 {
     Q_OBJECT

 public:
     MainWindow(QWidget *parent = nullptr);
     ~MainWindow();


 signals:
     /* 声明一个信号,只需声明,无需定义 */
     void pushButtonTextChanged();

public slots:
     /* 声明一个槽函数 */
     void changeButtonText();

     /* 声明按钮点击的槽函数 */
     void pushButtonClicked();

 private:
     /* 声明一个对象 pushButton */
     QPushButton *pushButton;
 };

3、连接信号与槽

connect(pushButton, SIGNAL(clicked()), this, SLOT(pushButtonClicked()));
connect(this, SIGNAL(pushButtonTextChanged()), this, SLOT(changeButtonText()));

注意:

发送信号的对象,和接收的信号的对象。因为我们 pushButtonClicked()是本类里定
义的槽,所以用 this 来接收。

四、QT帮助文档

Qt Creator 则不需要帮助文档,在我们安装 Qt 时,帮助文档已经安装在我们的“安装目录
/Qtx.xx.xx/Docs/”下,使用的是 html 文本的方式,我们可以使用浏览器打开这种 html 文本

要想学好 Qt,帮助文档是少看不了的!其实 Qt的帮助文档就是一本十分庞大且非常好的教程了,我们这个教程只是引领大家入门 Qt,引领大家在 Qt 这个非常庞大的文档里学习常用的控件和方法

注:参考正点原子文档

标签:函数,public,connect,信号,linux,MainWindow,Qt
From: https://blog.csdn.net/weixin_56905687/article/details/142814852

相关文章

  • Linux的常见命令
    查看帮助--help 示例:ls--helpman 示例:manlsman命令查看帮助快捷操作:空格键:显示手册下一屏。enter键:一次滚动一行内容。b:回滚一屏。q:退出man命令。注意:这两个命令都可以查看帮助信息,man的内容会比--help的更全面一些。ls查看文件信息常用参数:-a:显示指定......
  • Qt知识点笔记
    C++高级概念详解一、智能指针1.概述智能指针是C++中用于自动管理内存的工具,它能够确保在适当的时候自动释放内存,防止内存泄漏。2.类型比较2.1原始指针classMyClass{public:MyClass(){std::cout<<"Constructorcalled\n";}~MyClass(){std::cout<<"D......