Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

深入信号和槽---QT

$
0
0

    这一节说一些理论的东西吧,聊一聊这QT的一个重要组成部分,那就是信号和槽。这个机制可以再对象之间并不了解的情况下将他们的行为联系起来。前面的几篇文章中已经用到过连接信号和槽了,声明控件自己的信号和槽,并实现了槽函数,发送信号。现在咱再聊聊这个机制。

    槽的话,大家可以看成一个成员函数(其实和成员函数不一样,这样说为了初学者容易理解),可以使虚函数,可以被重载。可以定义为公有,可以为私有,也可以为保护。它可以像C++的成员函数一样被调用,可以传递任何类型的参数。注意的是,槽函数能和一个信号连接,只要信号发出,这个槽函数会自动调用。

   看看语法吧,connect语法:

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

      其中sender和receiver是QObject对象指针。还有一些要注意的是,一个信号可以连接到多个槽,多个信号可以连接一个槽,一个信号可以和另一个信号连接。

    1、一个信号可以连接到多个槽

                    connect(slider,SIGNAL(valueChanged(int)),spinBox,SLOT(setValue(int)));

                    connect(slider,SIGNAL(valueChanged(int)),this,SLOT(updataStatusBarIndicator(int)));

               2、多个信号可以连接一个槽

                    connect(lcd,SIGNAL(overflow()),this,SLOT(handleMathError));

                    connect(calculator,SIGNAL(divisionByZero(),this,SLOT(handleMathError)));

              3、一个信号和另一个信号连接

                    connect(lineEdit,SIGNAL(textChanged(const QString &)),this,SIGNAL(updateTecord(const QString &)));

好吧,今天就少说一点吧!

           

作者:tianhong11 发表于2013-2-11 16:32:54 原文链接
阅读:85 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>