QT基础(二)之控件、信号和槽

QT基础(二)之控件、信号和槽

文章目录

  • QT基础(二)之控件、信号和槽
    • 一、控件
      • 1.1 常用控件介绍
      • 1.2 给控件改名
    • 二、信号和槽
      • 2.1 什么是信号和槽?
      • 2.2 如何关联信号和槽?

一、控件

1.1 常用控件介绍

Lable(标签):常用于放置文本标签,也可放置图片、GIF图片等;

Text Edit(多行文本编辑框):可以输入显示多行文本和图片,可以换行;

Line Edit(单行文本编辑框):单行输入文本编辑框,输入时不会换行,常用于账号、密码等单行输入场景;

Push Button(下压按钮):单击按下,可以触发单击信号;

1.2 给控件改名

当我们在代码中需要用到控件对象时,必须知道控件对象的名字。但是我们对界面进行布局时,生成的都是默认名称,难以区分控件的功能。必须根据控件的类型和功能作用对其进行重新命名。修改方法如下:

QT基础(二)之控件、信号和槽_第1张图片

二、信号和槽

2.1 什么是信号和槽?

​ QT中控件间最重要的通信方式就是信号和槽。首先解释信号,信号是由控件的事件发出的,比如按钮被点击时会发出click单击的信号。槽就是一个函数,也叫槽函数。如果把信号比作水流,槽就是引水流用的槽。将信号(水流)引到槽后,我们只需要到槽中就可以找到信号(水流)。将信号引到槽的过程叫关联

​ 关联信号到槽函数后,当控件的某一事件触发发出相应信号之后,程序就会跳转到槽函数中执行。非常类似于中断的思想。如关联按钮单击信号和槽函数后,按钮被按下发出单击信号后,就会跳转到其相应的槽函数。

2.2 如何关联信号和槽?

  • 自动关联

    在UI布局界面,选中需要关联信号的控件,右键选择转到槽,在弹出的窗口选择需要关联的信号。选择完成后会自动生成一个槽函数,并且在相应的类中进行声明,并转到函数的定义处。

    下面选择一个按钮进行自动关联操作。

    1.选择按钮pushButton控件,转到槽

QT基础(二)之控件、信号和槽_第2张图片

2.选择需要关联的信号,这里选择单击信号click()

QT基础(二)之控件、信号和槽_第3张图片

3.转到槽函数,并在类中自动进行声明

QT基础(二)之控件、信号和槽_第4张图片 QT基础(二)之控件、信号和槽_第5张图片

在槽函数中打印一些调试信息:

QT基础(二)之控件、信号和槽_第6张图片

运行,测试:

QT基础(二)之控件、信号和槽_第7张图片
  • 手动关联

手动关联需要使用connect()函数,函数参数如下:

image-20200802103322346

简化一下:

connect(A,SIGNAL(B),C,SLOT(D));

用法:将控件对象A的信号B,关联到对象C的槽函数D。示例:

//将clearBt按钮的clicked()单击信号关联到当前widget界面对象的槽函数clearBt_clicked()
connect(ui->clearBt,SIGNAL(clicked()),this,SLOT(clearBt_clicked()));

这里需要注意,手动关联的槽函数形式不要与自动关联的一致,不要以on开头,否则当信号触发时会执行两次槽函数

下面以clearBt为例,进行手动关联。

1.使用connect函数关联信号和槽函数,实现槽函数
QT基础(二)之控件、信号和槽_第8张图片

2.在类中对槽函数进行声明
QT基础(二)之控件、信号和槽_第9张图片

运行,测试:
QT基础(二)之控件、信号和槽_第10张图片

  • 关联方式使用场合

    • 对于一些简单、可被操作触发的信号如按键的点击信号,使用自动关联会非常快捷简单;

    • 对于一些比较抽象或者难以操作的信号如串口的数据接收等信号,一般使用手动关联;

    • 如果使用手动关联,需要注意槽函数的命名格式,最好不要以on_xx开头,否则容易触发两次。

你可能感兴趣的:(QT,c++,qt5)