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

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

时间:2024-10-10 17:17:50浏览次数:7  
标签:函数 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

相关文章

  • zabbix7proxy安装部署(基于almalinux9.4)
    一.安装zabbix-proxy1.下载软件仓库rpm-Uvhhttps://repo.zabbix.com/zabbix/7.0/alma/9/x86_64/zabbix-release-7.0-2.el9.noarch.rpmdnfcleanalldnfmakecache2.安装dnfinstall-yzabbix-proxy-mysqlzabbix-sql-scriptszabbix-selinux-policy 二.安装mysql1.下......
  • Linux的常见命令
    查看帮助--help 示例:ls--helpman 示例:manlsman命令查看帮助快捷操作:空格键:显示手册下一屏。enter键:一次滚动一行内容。b:回滚一屏。q:退出man命令。注意:这两个命令都可以查看帮助信息,man的内容会比--help的更全面一些。ls查看文件信息常用参数:-a:显示指定......
  • Linux中提示:/usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.18' not found 的解决
    一、查看gcc版本中包含哪些库#1.终端中输入如下命令:strings/usr/lib64/libstdc++.so.6|grepGLIBC#2.显示如下:===============================================GLIBCXX_3.4GLIBCXX_3.4.1GLIBCXX_3.4.2GLIBCXX_3.4.3GLIBCXX_3.4.4GLIBCXX_3.4.5GLIBCXX_3.4.6GLIBC......
  • Qt - 去掉自带的ui成员
    AdvertisingDialog.h#pragmaonce#include<QDialog>#include"ui_AdvertisingDialog.h"#include"Controller.h"classAdvertisingDialog:publicQDialog,publicUi_AdvertisingDialog{ Q_OBJECTpublic: AdvertisingDialog(Contro......
  • Qt知识点笔记
    C++高级概念详解一、智能指针1.概述智能指针是C++中用于自动管理内存的工具,它能够确保在适当的时候自动释放内存,防止内存泄漏。2.类型比较2.1原始指针classMyClass{public:MyClass(){std::cout<<"Constructorcalled\n";}~MyClass(){std::cout<<"D......
  • AWS Linux2 安装 nginx
    如果您使用的是AWSLinux2,则必须从AWS“ExtrasRepository”安装 nginx。要查看可用包的列表:#Viewlistofpackagestoinstallamazon-linux-extraslist您会看到类似于以下内容的列表:0ansible2disabled[=2.4.2]1emacsdisabled[=25.3]2memcached1......
  • Qt/C++加载不同的地图控件/地图类型/缩放标尺/缩略图/比例尺/实时路况/全景视图等
    一、前言说明在展示地图的时候,有些常规的操作,比如调整地图的缩放级别,切换到卫星图等,希望能够在地图上直接操作实现,于是就有了一堆地图控件,可以根据自己的需求动态的添加和删除,这样就更直接更快捷,而不是通过函数去设置。几乎每个地图厂家都提供了类似的控件,尽管命名可能有些差别,常......
  • 信号相关
    信号信号是软件中断,提供了一种处理异步事件的方法,如在终端按下Ctrl+C会产生SIGINT中断信号。信号产生用户键入:必须在终端按下Ctrl+C和Ctrl+X等会产生对应信号硬件异常产生信号:除数为0、无效的内存引用等,如对执行一个无效内存引用的进程产生SIGSEGV信号进程调用kill函数将信......
  • Linux常用命令1
    1.查看进程ps-ef2.查看hping3的进程ps-ef|grephping33.hping3发包命名hping3目的IP-p目的端口-s源端口-k保持指定的源端口-i包速率uXXX4.查看日志命令tail-f日志名5.抓包命令tcpdump-iens1f2tcpandhost3.3.3.34-nn写入抓包文件tc......
  • HDMI CEC信号
    HDMICEC(ConsumerElectronicsControl,消费者电子控制)是HDMI标准中的一项功能,旨在通过单一的HDMI连接线实现多设备之间的互联与统一控制。具体来说,CEC允许连接的设备通过专用的CEC引脚进行通信,从而实现例如通过一个遥控器控制多台设备的功能。HDMICEC信号的作用在HDMI接口中,CEC......