信号与槽的简单应用实例
题外话
按照我之前的规划,我让江俊良同学撰写了关于QT中信号与槽的相关技术文档并在周一发表。江俊良同学的所写的文档,简单易懂,大家阅读之后都一致好评,在此值得肯定,愿再接再厉。3月14日的任务目的在于加深你们对于QT中信号与槽的理解,所以想简单的让你们学会去使用信号与槽,故给出了如下需求,让大家通过编程实现
3.14_taskLet’s Do It Together
step1 创建界面
这一步很简单,我们打开QT,通过设计师模式,简单的拖拽一个LineEdit和PushButton,并做下垂直或水平布局(随意),效果如下图:
界面Step2 声明槽函数
进入MainWindow.h(我创建的是默认的mainwindow类,你们如果在创建时自定义了类名,那么就进入“你创建的类名.h”),在类中我们添加一种QT独有的类的声明标识符:"private slots:"
如图,我声明了一个void 类型的名为ButtonSlot()的槽函数,接下来我们定义槽函数如何去实现功能。
按下F4我们可快速切换到Mainwindow.cpp,并补出槽函数的外体轮廓:
Step3 在槽函数中实现功能
我们的目的在于当Button被点击后,弹出一个对话框,对话框显示出LineEdit的输入。
分以下几步实现:
1.使用QMessageBox类掉出一个对话框。
QMessageBox类之后我们会常用到,需要添加#include<QMessageBox>这个编译预处理命令。在此,先给大家一个简单的使用示范,你们之后再仔细了解。QMessage类中有一个静态成员函数Information.这个函数会弹出一个对话窗口,用于提示一些信息。既然是静态成员函数,那么我们可以无需创建对象便可直接调用,调用方法为:QMessageBox::Information(当前父窗口,窗口标题,信息内容);其中第一个参数为我们当前的父窗口,即Mainwindow类所创建的负窗口,所以我们可以直接写this指针。窗口标题和信息内容都是是QString类型。窗口标题我们可以随意填写,用双引号括起来即可临时赋值一个字符串,或者用tr("")的方式。
2.如何获取LineEdit中的字符串
这个无需多讲,一行代码即搞定:
显然,LineEdit类中有text()这个成员函数,它返回一个QString类型的字符串。
3.建立槽与信号的连接
构造函数中连接信号与槽4.在构造函数中更改窗口标题
在构造函数中更改窗口标题写入“ASA”即可。
这里,就大功告成了,ctrl+R跑起来吧!
最终实现