QT基础(二)之控件、信号和槽
一、控件
1.1 常用控件介绍
Lable(标签):常用于放置文本标签,也可放置图片、GIF图片等;
Text Edit(多行文本编辑框):可以输入显示多行文本和图片,可以换行;
Line Edit(单行文本编辑框):单行输入文本编辑框,输入时不会换行,常用于账号、密码等单行输入场景;
Push Button(下压按钮):单击按下,可以触发单击信号;
…
1.2 给控件改名
当我们在代码中需要用到控件对象时,必须知道控件对象的名字。但是我们对界面进行布局时,生成的都是默认名称,难以区分控件的功能。必须根据控件的类型和功能作用对其进行重新命名。修改方法如下:
二、信号和槽
2.1 什么是信号和槽?
QT中控件间最重要的通信方式就是信号和槽。首先解释信号,信号是由控件的事件发出的,比如按钮被点击时会发出click单击的信号。槽就是一个函数,也叫槽函数。如果把信号比作水流,槽就是引水流用的槽。将信号(水流)引到槽后,我们只需要到槽中就可以找到信号(水流)。将信号引到槽的过程叫关联。
关联信号到槽函数后,当控件的某一事件触发发出相应信号之后,程序就会跳转到槽函数中执行。非常类似于中断的思想。如关联按钮单击信号和槽函数后,按钮被按下发出单击信号后,就会跳转到其相应的槽函数。
2.2 如何关联信号和槽?
-
自动关联
在UI布局界面,选中需要关联信号的控件,右键选择转到槽,在弹出的窗口选择需要关联的信号。选择完成后会自动生成一个槽函数,并且在相应的类中进行声明,并转到函数的定义处。
下面选择一个按钮进行自动关联操作。
1.选择按钮pushButton控件,转到槽
2.选择需要关联的信号,这里选择单击信号click()
3.转到槽函数,并在类中自动进行声明
在槽函数中打印一些调试信息:
运行,测试:
- 手动关联
手动关联需要使用connect()函数,函数参数如下:
简化一下:
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函数关联信号和槽函数,实现槽函数
2.在类中对槽函数进行声明
运行,测试:
-
关联方式使用场合
-
对于一些简单、可被操作触发的信号如按键的点击信号,使用自动关联会非常快捷简单;
-
对于一些比较抽象或者难以操作的信号如串口的数据接收等信号,一般使用手动关联;
-
如果使用手动关联,需要注意槽函数的命名格式,最好不要以on_xx开头,否则容易触发两次。
-