贵阳施波老公:Qt的signal/slot机制的原理和使用
来源:百度文库 编辑:九乡新闻网 时间:2024/04/29 19:38:58
使用过qt的人都知道,signal/slot是Qt对象以及其派生类对象之间的一种高效通信接口,它是Qt的核心特性,也是区别与其他工具包的重要地方。它完全独立于标准的C/C++语言,因此用正确的处理好信号和槽,必须借助于一个成为moc(Meta Object Compiler)的qt工具,该工具是一个C++预处理程序,能为高层次的事件处理自动生成所需要的附加代码。1.与回调函数的不同:回调函数传递的是函数指针,很容易造成程序崩溃,另一方面,回调方式紧紧的绑定了图形用户接口的功能元素,因此很难开发进行独立的分类。而signal/slot机制也能携带任意数量和任意参数,并且不会像回调函数那样产生core dumps。此外,用户可以将N多个信号和单个槽相连接,或者将将N个槽和单个信号连接,甚至是一个信号和另外一个信号连接。这样,当信号发射时,所以与之相连的信号或者槽都会按一定的次序(没有预定的顺序,也就是说执行的先后顺序是随机的)执行,当所有与之相连的信号和槽返回后,emit才会返回。2.信号的定义:siganls:void mySignal();void mySignal( int x );void mySignal( int x, int y );其中signals是Qt的关键字,而不是C/C++的关键字。此外信号与一般函数的区别是,它的所有返回值都是void,并且它没有函数实现体,它的函数体是moc自动生成的。3.槽的定义:public slots:void mySlot();void mySlot( int x );不同类型的slot有不同的操作权限,具体看slot是public、protected还是private。4.信号与信号或者与槽的连接:QObeject::connect( obj1, SIGNAL( mySignal() ), obj2, SLOT( mySlot() ) );QObeject::connect( obj1, SIGNAL( mySignal() ), obj2, SIGNAL( mySignal2() ) );5.信号与槽的断开:QObeject::disconnect( obj1, SIGNAL( mySignal() ), obj2, SLOT( mySlot() ) );QObeject::disconnect( obj1, SIGNAL( mySignal() ), obj2, SIGNAL( mySignal2() ) );这种机制GUI控件的操作来说很是方便,当然也要用的恰当,用的规范和科学。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/mawl2002/archive/2009/03/09/3973583.aspx
Qt的signal/slot机制的原理和使用
Qt signal/slot的4种连接方式
QT 的信号与槽机制介绍
QT和HT的区别
“渐变映射”调整的原理和使用
Qt中菜单和快捷键的实现
使用VC2005编译真正的静态Qt程序
Qt源码分析之信号和槽机制
基于Qt/Embedded和Qtopia的GUI设计
从kernel原始码的角度分析signal的错误用法和注意事项(zt)
斐波纳切线的使用原理
转载: Qt 的一些心得
收阴术治疗疾病的原理机制理论观念
Qt使用小技巧
TT数据库的锁机制和隔离机制
宝塔线的使用原理 - Qzone日志
半导体制冷器的原理与使用
线偏振镜(PL)和圆偏振镜(CPL)的原理与使用 - 无忌论坛
线偏振镜(PL)和圆偏振镜(CPL)的原理与使用
燃气灶具选购、原理和使用
浅谈Qt Embedded的性能优化
蒸汽锅炉的构造和原理
mdev的使用方法和原理。
数据库中事务机制的进阶使用(整理)