Qt编程之信号和槽机制

来源:互联网 发布:电子商务就业前景知乎 编辑:程序博客网 时间:2024/05/02 23:44

         今天第一次接触了Qt编程,呵呵,比MFC编程好用多了,之前也自学过java,感觉界面编程这一块和java的思想很像,不过到底是谁像谁我就不知道了,第一次接触了Qt编程中的精华:信号和槽。最强大的是,这种类似于MFC中MESSAGE_MAP的方式不仅可以用来做界面编程中按钮啊,文本框这种控件的响应,就是普通的类如果有必要的话,也是可以使用信号和槽机制的。好了,下面总结下信号和槽机制的一点知识。

        槽和普通的C++成员函数一样,可以是虚函数,可以被重载,可以是公有的,可以是保护的或者私有的,并且也可以被其他C++成员函数直接调用,唯一不同的就是槽可以和信号关联起来,这样,每当发射这个信号的时候,就会自动调用这个槽了。将信号和槽连接起来的函数是:

       QObject::connect(sender,SIGNAL(signal),receiver,SLOT(slot));

       其中sender和receiver都是指向QObject类型(当然也可以是子类)的指针,而signal和slot是函数名。

       信号和槽连接的时候分如下几种情况:

      1.一个信号只和一个槽连接,这是最常见的情况。

      2.一个信号连接多个槽。

        此时即receiver或者slot函数不同,当发射这个信号的时候,会以不确定的顺序一个接一个的调用这些槽。

      3.多个槽连接一个信号。

       此时即sender或者signal函数不同,无论发射哪个信号,都会调用这个槽

     4.一个信号可以与另外一个信号相连接

       connect(sender,SIGNAL(signal1),recevier,SIGNAL(siganl2));

       当发射第一个信号时,也会发射第二个信号。除此之外,信号与信号之间的连接和信号与槽之间的连接是难以区分的。

     

      要想成功连接信号和槽,需要注意的地方有:

     信号和槽的函数的参数必须具有相同的顺序和相同的类型,但是如果信号的参数比槽的参数多,多余的参数将会被简单的忽略。

原创粉丝点击