Qt 信号和槽机制

这篇具有很好参考价值的文章主要介绍了Qt 信号和槽机制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

一. 简介

        在Qt中使用信号和槽机制来完成对象之间的协同操作。简单来说,信号和槽都是函数,比如按下窗口上的一个按钮后想要弹出一个对话框,那么就可以将这个按钮的单击信号和我们定义的槽关联起来,在这个槽中可以创建一个对话框,并且显示它。这样,当单击这个按钮时就会发射信号,进而执行我们的槽来显示一个对话框。

        实际上,我们一般需要自己实现的是槽函数。槽函数即:接收到信号后所要执行的动作。

二. 声明

/*
 * 使用关键字:signals,来声明信号函数
 */
signals:
    void sig_updateNtpTime(QString *time);

/*
 * 使用关键字:slots,来声明槽函数。
 * 一般槽函数需要指明权限:public/private/protected等
 */
public slots:
    void slot_receiveTime(QString *time);

注意: 槽一般使用slots关键字进行修饰(Qt 4中必须使用,Qt 5以后使用新connect语法时可以不用,为了与一般函数进行区别,建议使用)

三. 信号的类别

1)基于部件对象,可以使用其类中自带的信号(比如:按钮部件,其类中自带的信号)

Qt 信号和槽机制,Qt,qt,信号槽机制

/* 
 * 1)clicked(): 被点击
 * 2) clicked(bool):被点击,区分是否被选中(一般在单选框部件中使用)
 * 3)pressed(): 按钮被按下
 * 4)released(): 按钮被松开
 */

2)自定义信号

/*
 * 使用关键字:signals,来自定义信号
 */
signals:
    void sig_updateNtpTime(QString *time);

四. 信号和槽的关联方式

1.  使用connect()函数关联

// 函数原型
QObject::connect(const QObject *sender, const char *signal, const QObject *receiver, const char *method)
// connect()函数中的四个参数分别是:发送信号的对象、发送的信号、接收信号的对象和要执行的槽。

信号触发形式:

1)使用部件对象自带的信号

connect(ui->button, SIGNAL(clicked()), this, SLOT(slot_exitsCardsDevice()));
// 当点击按钮button时,触发信号-->执行槽函数 slot_exitsCardsDevice().

2)使用自定义的信号

connect(ui->functionBtn_1, SIGNAL(sig_mouseReleaseEvent()), this, SLOT(slot_functionBtn_1_clickedX()));

//使用关键字:emit,来触发自定义信号

emit sig_mouseReleaseEvent();//执行后,触发槽函数 slot_functionBtn_1_clickedX()

2. 自动关联

        在设计模式中的UI主设计区,选择需要操作的部件,右击,在弹出的菜单上选择“转到槽”,根据需求选择对应的槽函数。

        自动关联就是将关联函数整合到槽命名中。 例如on_pushButton_clicked()就是由字符“on”和发射信号的部件对象名,还有信号名组成。这样就可以去掉那个connect()关联函数了。每当pushButton被按下,就会发射clicked()信号,然后就会执行on_pushButton_clicked()槽。

//对名称为 pushButton_save 的按钮进行的 按下和释放 动作的槽函数
void frmTelBook::on_pushButton_save_pressed()
{
    //
}

void frmTelBook::on_pushButton_save_released()
{
    //
}

注意:一般自动关联方式的槽函数数目较少,选择性叫少。文章来源地址https://www.toymoban.com/news/detail-799544.html

到了这里,关于Qt 信号和槽机制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • QT之信号和槽

    QT之信号和槽

    一、什么是信号和槽? 我们经常看到的功能,点击一个按钮实现窗口关闭。 这一过程发生了什么?是怎么实现的 按钮相当于一个信号,点击相当于发送一个信号,窗口是个接收者,关闭窗口是个槽函数 信号:各种事件 槽:响应信号的动作 当一个按钮(信号)被触发(发送

    2024年02月07日
    浏览(10)
  • 【QT】信号和槽(15)

    【QT】信号和槽(15)

    前面的内容说了很多不同的控件如何使用,今天来看下QT的核心, 信号与槽(Signals and slots) ! 简单理解一下,就是我们的信号与槽连接上了之后,发射一个信号给到槽,槽函数接收到了这个信号之后,槽函数会被调用。 1.python 3.7.8   可直接进入官网下载安装:Download Pyt

    2024年02月10日
    浏览(7)
  • 七、Qt 信号和槽

    七、Qt 信号和槽

    在QT4以上的版本,在窗体上用可以通过选中控件,然后点击鼠标右键单击按钮,选择“转到槽”。可以自动创建信号和槽。 选择clicked(),并点击 ok Qt Creator会给头文件和代码文件自动添加 这个按钮的单击事件(信号和槽)。 不同的控件,信号不全是一样的,根据控件的使用场

    2024年01月19日
    浏览(13)
  • 07.QT信号和槽-2

    07.QT信号和槽-2

            在Qt中,允许⾃定义信号的发送⽅以及接收⽅,即可以⾃定义信号函数和槽函数。但是对于⾃定义的信号函数和槽函数有⼀定的书写规范。 1.1 自定义信号 (1)⾃定义信号函数必须写到\\\"signals\\\"下; (2)返回值为void,只需要声明,不需要实现; (3)可以有参数,

    2024年04月14日
    浏览(9)
  • Qt6.2教程——3.Qt信号和槽

    信号和槽是Qt中一个强大的特性,用于处理对象之间的通信。它们是一种事件处理机制,允许一个对象在某个事件发生时通知另一个对象。 定义 : 信号是一个QObject的成员函数,当某个特定事件发生时,它被自动调用。它可以与一个或多个槽关联。 声明 : 在Qt类的声明中,信号

    2024年02月10日
    浏览(11)
  • [Qt的学习日常]--信号和槽

    [Qt的学习日常]--信号和槽

    前言 作者 :小蜗牛向前冲 名言 :我可以接受失败,但我不能接受放弃   如果觉的博主的文章还不错的话,还请 点赞,收藏,关注👀支持博主。如果发现有问题的地方欢迎❀大家在评论区指正 本期学习:什么是信号和槽,自定义槽函数和信号函数,信号和槽的传参,断开,

    2024年04月28日
    浏览(9)
  • 20221210 QT----信号和槽的使用

    20221210 QT----信号和槽的使用

    什么是信号(signal) 以QPushButton为例: (1)按下按钮时,会触发一个mousePressEvent事件,此时会发出一个pressed信号; (2)松开按钮时,会触发一个mouseReleaseEvent事件,此时会发出released和clicked信号。 事件的种类有很多,不同的事件都对应着不同的信号,当事件发生时,对应

    2024年02月15日
    浏览(9)
  • Qt快速学习(一)--对象,信号和槽

    Qt快速学习(一)--对象,信号和槽

    目录 1.Qt概述 1.1 什么是Qt 2.2 手动创建 2.3 pro文件 2.4 一个最简单的Qt应用程序        3 第一个Qt小程序 3.1 按钮的创建 3.2 对象模型(对象树)       3.3 Qt窗口坐标体系 4 信号和槽机制         4.1 系统自带的信号和槽 4.2 自定义信号和槽     4.3信号槽的拓展     

    2024年02月12日
    浏览(8)
  • qt信号和槽避免多次连接

    qt同一个信号和槽多次连接,则槽函数 会触发多次 (默认),可能不是我们想要的结果。 有3种方法可以解决这个问题: 因为初始化函数在在整个程序中只运行一次,所以这里面连接信号和槽,就能避免重复连接问题了。 Qt::UniqueConnection 的作用是:如果该信号以前没连接过

    2024年02月10日
    浏览(18)
  • 02 qt基本控件及信号和槽

    02 qt基本控件及信号和槽

    功能:显示一个字符串内容 主要接口函数 构造函数: 赋值运算符重载: 功能函数: 1)基本数据类型(int,float,double,char*)转换成字符串 number(long , int ) : QString number(int , int ) : QString number(uint , int ) : QString number(ulong , int ) : QString number(qlonglong , int ) : QString number(qulonglong , int

    2024年02月12日
    浏览(7)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包