浅析QT入门之信号与槽机制
作者:贺志朋
来源:《山东工业技术》2016年第22期
摘 要:QT是一个跨平台的C++ GUI应用构架,信号与槽机制是其核心机制。要精通QT编程的前提就是就对信号和槽有所了解。本文对QT里信号与槽机制最常见的三种应用方式做了分析,指出它们在应用中的不同之处,便于我们加深对QT的信号与槽机制的理解。 关键词:信号;槽;QT
DOI:10.16640/j.cnki.37-1222/t.2016.22.122 1 基本概念 1.1 信号
一个对象要发射某个信号,只有当此信号的内部状态发生改变时才会被发射。同时能够发射这个信号的对象必须是定义过这个信号的类及其派生类。当发射一个信号时,将立刻执行和此信号相关联的槽,和调用一个正常函数一样。任何 GUI 事件循环完全独立于信号与槽机制之外。发射函数(emit)是等所有的槽返回以后才返回。 如果某个信号和多个槽相关联,当发射这个信号时,将依次地去执行这些槽,但执行这些的顺序将是不确定的、随机的。在头文件里进行信号的声明的,当信号声明区指出已进入了QT的signals关键字,自己的信号随后即可被声明。 1.2 槽
C++普通成员函数之一就是槽,可以正常调用槽,多种信号可以与槽相关联是槽的唯一特殊性。当发射与槽关联的信号时,就会调用该槽。槽能带参数,但是属于槽的参数不能缺省。槽属于普通成员函数的一员,它们也有存取权限。是否能够与其相关联取决于槽的存取权限。槽函数也分为三种类型,即protected slots、public slots 和private slots。最后进行槽的声明也是在头文件中。
2 信号与槽的三种应用方式
以单击窗口上的一个按钮要弹出一个对话框为例: 3 总结
本文主要阐述了QT中信号与槽应用的三种方式,第一种方式需要进行槽声明,定义槽的实现并把信号和槽进行关联,这种方式稍显繁琐,但便于理解,适合初学者使用;第二种方式
龙源期刊网 http://www.qikan.com.cn
直接对部件进行转槽处理,自动添加槽声明、生成槽定义实现函数并自动进行信号与槽的链接,只需添加槽实现代码即可,这种方式操作简单,但不好理解其具体内涵,适合对QT有一定研究者使用;第三种方式是在设计器中进行,这个与手写函数是一样的,它用的也是自动关联,也会自动添加槽声明。通过这三种方式的比较,我们对QT的核心机制:信号与槽机制有一个整体把握,借此为对QT的进一步学习研究打下一个良好的基础。 参考文献:
[1]霍亚飞.QT Creator 快速入门[M].4版.北京.北京航天航空大学出版社,2016 . [2]AP Witkin.Space-scale filtering[C].In Proc.Of IJCAI, 1983:1019-1021.
[3]J Koenderink.The structure of image [J].Biological Cybernation,1984,50(06):363-370. [4]P Perona and J Malik.Scale-Space and edge detection using anisotropic diffusion [J].IEEE Trans.PAMI,1990,12(07):629-639.
龙源期刊网 http://www.qikan.com.cn
因篇幅问题不能全部显示,请点此查看更多更全内容