- 论坛徽章:
- 0
|
槽机制:槽和其他函数不一样的地方在于槽可以和信号连接在一起,其他都一样。连接的函数为:connect (sender, SIGNAL(signal), receiver, SLOT(slot));
sender和receiver都是指向QObject的指针。
signal和slot是不带有参数名称的函数签名。
SIGNAL和SLOT宏实质上会把他们的参数转换成字符串。
槽的特点:
一个信号可以被连接到多个槽中。
多个信号也可以连接到一个槽中。
一个信号可以连接到另外一个信号。(信号到信号的连接和信号到槽的连接是难以区分的)。
连接可以被移除。disconnect(lcd, SIGNAL(overflow()), this, SLOT(handleMathError()));
当连接一个信号到槽时,他们必须有相同顺序和类型的参数。但如果信号的参数比槽多,那么多余参数会被忽略。
可以说槽是对所产生信号的处理函数。
那么如何产生信号和相应的处理函数(槽)呢?
如果是以代码方式的话,信号和处理函数都是声名出来的,用的是关键字signals和关键字slots。他们的用法和c++
里面的pulic,private等一样。在类的声名中使用。signals声名信号,slots声名处理函数,slots可以用
private来修饰。那么在类的构造函数中我们就要将信号及其处理函数对应起来,即建立槽。
在产生信号的时候要使用emit关键字来表示发射信号。
如果是用qt designer的对话框来建立槽的话就需要使用菜单edit | connections 来设置槽。在connections对话框中
选择信号和对应的函数,对应的处理函数可以用edit slots自己创建。
qt的快捷键设置和vc下一样,用&来指明。
每个类中都默认的有一个init()函数,这个函数默认会在类的构造函数的最后一行调用。我们也可以改写这个函数。
用qt disigner 生成的交互界面保存在一个.ui的文件中,并且代码被保存为一个.ui.h文件。我们可以编辑这个.ui.h
文件,对其中的函数进行修改。在进行qmake后就会生成相应的.h和.cpp文件。那么以后就可以像一般的头文件一样的
使用这些类了。
本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/69984/showart_704263.html |
|