从零开始学Qt – 08:关联信号与槽的几种可视化实现方式

从零开始学Qt – 08:关联信号与槽的几种可视化实现方式

Qt图标

信号与槽(Signal & Slot)是Qt编程的基础。信号(Signal)就是在特定情况下被发射的事件,而槽(Slot)就是对信号响应的函数。在代码层次,信号与槽的关联是用QObject::connect()函数实现的。

Qt Creator提供了可视化界面设计的工具,其中包含了几种可视化关联信号与槽的方式。本文以图文形式对此进行了介绍。

方式一:信号与槽编辑器

利用窗口中部下方的信号与槽编辑器(Signals & Slots Editor),可以方便地对组件提供的信号与槽之间进行关联,如图1所示。具体步骤说明如下:

  1. 点击“Signal_Slots Editor”叶片卡进入信号与槽编辑器。
  2. 点击左上角的绿色+号按钮,添加一个关联模板(在下方列表中显示)。
  3. 依次双击属性,在弹出的下拉列表中选择需要的信号发送组件和信号类型。
  4. 依次双击属性,在弹出的下拉列表中选择需要的信号接收组件和槽函数。

完成后的结果如图1下方所示(这里实现了“单击按钮关闭窗口”的功能)。

从零开始学Qt – 08:关联信号与槽的几种可视化实现方式

图1. 利用信号与槽编辑器的方式

方式二:窗体设计界面

在窗体设计界面上方的工具栏中,点击“Edit Signals/Slots”按钮,可以进入信号与槽设计模式。具体操作步骤如下(如图2所示):

  1. 点击“Edit Signals/Slots”按钮,进入关联设计模式。
  2. 将鼠标移动到信号发射组件上(这里是按钮),该组件会变成红色。按下鼠标左键不放,移动鼠标到信号接收组件上,然后松开鼠标,此时界面上发送和接收组件之间会显示红色的连接线。
  3. 在弹出的配置关联(Configure Connection)窗口中,首先勾线下方的复选框,这样继承而来的信号和槽才会显示出来。然后分别在左右两个列表中选择信号函数和槽函数,最后点击OK按钮。
  4. 最后关联的结果仍然会在信号与槽编辑器的列表中显示出来(如图1下图所示)。因此这种操作方式与方式1的结果是相同的。
从零开始学Qt – 08:关联信号与槽的几种可视化实现方式

图2. 利用窗体设计界面的方式

方式三:自定义槽函数

这种方式会对选择的信号函数,自动生成一个槽函数框架。具体操作步骤如下(见图3、图4):

  1. 在发射信号的组件上单击鼠标右键,弹出菜单中点击“Go to slot...”。
  2. 在弹出的“Go to Slot”对话框中,选择想要发射的信号(这里以clicked为例),点击OK按钮确认。
  3. 界面自动切换到代码编辑模式,并自动创建了on_pushButton_clicked()槽函数框架。我们可以自己编写响应代码,比如这里我添加的this->close()代码,可以让窗口关闭。
从零开始学Qt – 08:关联信号与槽的几种可视化实现方式

图3. 选择Go to slot

从零开始学Qt – 08:关联信号与槽的几种可视化实现方式

图4. 槽函数框架

方式一和方式二适用于组件已经提供或定义的信号与槽之间的关联。关联添加后,在ui_widget.h文件的setupUi函数中,将会出现如下关联代码,

QObject::connect(pushButton, SIGNAL(clicked()), widget, SLOT(close()));

方式三适用于为组件自定义槽函数响应功能。该槽函数是通过setupUi函数中的如下代码自动与相应信号关联的,

QMetaObject::connectSlotsByName(Widget);

看了本文,你对信号与槽的三种可视化关联方式都了解了吗?欢迎大家多多关注评论转发[赞]!

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章