【第二章】自定义信号和槽函数

简介: 【第二章】自定义信号和槽函数

自定义信号

除了使用Qt框架提供的信号外,我们还可以自己定义信号以及槽函数。自定义信号和槽函数使得程序设计更加灵活。与槽函数一样,使用信号跟使用普通函数类似,只不过需要使用关键字signals声明且函数的返回值类型必须是void。如下:

signals:
    void mySignal(int value);

值得注意的是,在类中自定义一个信号时==,实际上只是声明了一个函数原型==。信号本身并不需要“我们”自己来具体实现,而是由Qt依据元对象编程技术自动生成。所以我们只需要告诉Qt这个函数是一个信号就可以了。

发射信号

信号通过emit关键字来发射,实际上emit只是一个宏,并没有实际操作,仅仅用于标识

emit mySignal(42);

上述代码就发射了mySignal信号,并携带了一个整型参数。当信号被发射时,Qt的元对象系统会找到该信号连接的所有槽函数,并依次调用它们。

自定义槽

槽函数可以是任何的普通函数,只需要在声明的过程中使用slots关键字。事实上,新的Qt版本出来之后可以不使用slots关键字(为了便于区分,推荐使用)。此外,槽函数可以搭配访问限定符使用。

比如:

通过函数名自动连接槽

事实上,除了使用slots关键字定义槽函数,我们也能通过使用设计模式给控件添加槽函数,并自动生成槽函数的声明。操作如下:

  1. 打开设计者模式,选择一个控件,鼠标右键单机该控件,选择转入槽
  1. 选择一个事件绑定槽函数
  2. 自动生成槽函数的声明,定义则需要自己实现

值得注意的的是,通过这种方式生成的槽函数自动连接上了信号!该信号就是之前我们选择的事件。

案例

实验要求:自定义一个信号和槽并进行连接,该槽函数响应信号的行为为修改窗口标题。这个自定义信号的发送是通过点击一个按钮来触发的

  1. 自定义一个mysignal信号和槽myhandler

    2.连接mysignal信号和槽myhandler

  1. 用设计者模式生成一个按钮控件,并为这个按钮的点击事件连接一个槽函数。该槽函数的行为是发送信号mysignal

    4.构建窗口,点击按钮并观察结果

这个简单的案例将我们上述内容都结合在了一起。

相关文章
|
7月前
|
安全
【第二章】信号与槽——connect函数的用法
【第二章】信号与槽——connect函数的用法
|
4月前
|
JavaScript Java Go
【Qt】Qt编程注意事项
【Qt】Qt编程注意事项
|
5月前
|
C++
Qt中的信号与槽如何学习?(包括自定义信号)这篇文章告诉你
以现实中的事件来举例的话,例如有两把不同颜色的信号枪,分别是红色,绿色,打响不通颜色的信号枪会触发不同的槽发生,比如说打响红色这个人就跑步,绿色就走步,但是还有一个很重要的机制,那就是连接,我们需要把信号枪去跟这个人的动作连接起来。 如果上面理解没问题的话我们可以把信号和槽看成两个工具,我们最重要的是如何去把这两个工具连接起来。 它的作用可以让我们更加灵活的去使用不同窗口间的切换以及某些事件的连接。
109 0
|
7月前
|
机器学习/深度学习 存储 算法
C++ 模版函数介绍:介绍模版函数的基本概念、用法和作用
C++ 模版函数介绍:介绍模版函数的基本概念、用法和作用
72 1
|
编译器 C++
【Qt】信号槽的三种连接形式
三种形式的信号槽连接,connect 语法...
156 0
|
7月前
|
C++
第三章:C++中的函数
第三章:C++中的函数
38 1
|
7月前
|
前端开发
【前端学习】—箭头函数和普通函数的区别(十四)
【前端学习】—箭头函数和普通函数的区别(十四)
qt信号和槽执行原理简单介绍
qt信号和槽执行原理简单介绍
150 0
|
搜索推荐 算法 编译器
Python编程基础:实验5——函数定义与调用
有关Python函数定义与调用的一些题目练习。
388 0
Python编程基础:实验5——函数定义与调用