《Qt快速入门》-- 信号与槽机制

每一个图形开发语言、工具都有自己的一套的ui交互机制,Qt也不例外,Qt有自己独特的信号与槽机制用于ui与功能算法的交互。

① Qt的信号与槽机制包含以下三点:

     1.确定是哪个控件发出了信号(Who

     2.确定发出了什么信号(What

     3.确定这个信号应该调用什么功能函数(这个函数在Qt中叫做“槽函数”,实际上和类中普通成员函数是一样的,唯一的不同就是它和控件绑定了

 

② 槽函数的三种:

    1.通过函数:connect(对象1,对象1的函数,对象2,对象2的函数)来实现

       其中,第一个参数:对象1是信号的发出者(一般是一个控件的实例对象),第二个参数:对象1的函数(一般是控件所能发出的信号,如CLICK()........),第三个参数:对象2是信号的接受者(一般是一个界面的实例对象),第四个参数:对象2的函数(一般是类中事先定义好的功能函数,此时这个函数即为槽函数)。

   2. 通过右击控件,选择”转化槽“   

                                  

    然后选择相应的信号函数

                                   

然后会自动跳到一个界面,此时一个槽函数的声明和实现都已经帮你生成了,其中函数名包含控件id名称(btn_cancel)和相应的信号名称(clicked)。

                                   

      相信有人会问,在第一个方法中有四个参数, 到这才只有三个(控件,信号,槽函数)呀?额。。少了的第三个参数其实默认为控件所在的这个窗口(它也是一个实例对象呀)。

    3.(不常用)通过在ui界面中设置:

     如图所示,在QT Designer窗口中的中间下面有个窗口,选中Singals&Slots Editor标签 

       点击”+“号,就可以像类似于connect函数一样添加槽函数啦~~

       不过这个方法有一个局限性,就是只能添加系统中的槽函数,不能添加自定义的槽函数,这个。。。。就很尴尬了。。所以一般使用第一种和第二种方法。。

 

 总结,一般添加槽函数是采用第一种和第二种方法,这两种方法各有利弊:

① 第一种方法比较繁琐,不过胜在直观清晰(代码可读性很高),所有connect函数都写在ui函数中,都集中在一块,哪个控件,发出什么信号,哪个窗口接受,做出什么功能。一目了然!(一般connect函数都写在ui-setUi(this);下面)

② 第二种方法,很方便 (我比较喜欢),但是要看哪个控件发出什么信号,用什么功能函数做出反应,都得一个一个去找函数。。其实还好啦。。可以去头文件去找函数声明呀,然后ctrl+F,在代码中查找呗。。嘻嘻嘻

 

看的视频教程中,视频中老师一直说Qt的信号与槽机制是他见过的UI交互设计中最简单方便。。。我接触的UI交互设计比较少。。以前也简单接触过AS,用java写过安卓小应用,印象中AS的交互设计也挺方便的。。。不过Qt也很优秀的呀!!!嘿嘿嘿

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章