当前位置:C++技术网 > 资讯 > Qt基础晋级,槽和信号机制

Qt基础晋级,槽和信号机制

更新时间:2015-07-25 15:33:13浏览次数:1+次

首先,我们很多书上见过如何写hello world,但是我们不知道为什么点击了 按钮,就弹出了 hello world的提示框。下面解释这是为什么!

First:建立项目,

,然后按照提示一步一步搞定,最后我们建立了一个名为 test的项目,下面开始进入正题:

首先,点击我们的界面文件,然后双击widget.ui文件,进入设计师界面,我们在控件库中拖一个Push Button,到widget(QMainWindow 或者QDiaglog都可以)中,,然后我们可以右键单击:,选择click()信号,就这样,跳到了代码界面,我们可以添加代码:,就这样,我们开始编译链接,搞定,,点击按钮弹出 hello world,原理是什么?下面揭晓:

我们曾经选择了click()信号,这就是信号,当程序运行的时候,我们的每一个动作都是被实时捕捉的,所以,当我们鼠标左键单击按钮时,那么程序就会知道是左键单击的按钮,然后查找信号和槽机制的连接表,查找后发现:左键的click()信号和一个叫做:on_pushButton_clicked()的槽函数链接,然后跳过去执行on_pushButton_clicked(),由于我们在次函数中调用了消息提示类的QMessageBox::information的函数,所以就看到了提示框!这就是槽和信号的运行机制!先有信号,和槽函数的定义,然后当信号被发出后,程序运行时的消息循环就会捕捉到信号,然后去查找它对应的槽函数,找到了就执行槽函数,找不到按照默认处理(不响应消息)!

这个效果我们还可以直接代码实现,拖完了 pushButton控件之后,直接在我们的构造函数中加入:connect (pushButton,SIGNAL(click ()),this,SLOT(mySlotFun()));其中mySlotFun ()的内容和on_pushButton_clicked()是一样的,那么程序执行后也可以起到一样的效果!


槽和信号,响应准确,但是有点速度的问题!WPS软件就是例子!很慢呐。。全是泪。