文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>信号与槽

信号与槽

时间:2010-11-23  来源:osullishuai80

一、信号与槽概述 (1)信号:一个特定的标示,当内部发生某些事件或状态改变时能够被发射. (2)槽  :与普通的C++类的成员函数几乎是一样,唯一区别在于,槽可以和信号连接在一起,当发射这个信号的时候,就会自动调用这个槽. (3)信号与槽的作用:对象之间通信的高级接口.简而言之,信号就是某件事情的触发,槽就是当事情发生时执行的动作.比如,当用户按下"确定"键时,该键就发出clicked()信号,然后槽就用于处理当按下"确定"键后需要执行的动作.   二、信号与槽的连接 (1)Designer实现两者的连接    <1>切换到"信号和槽编辑模式"(图1)    <2>左键拖动"show"到"helloQT"上,释放鼠标,会弹出信号和槽对话框.(图2)    <3>选择连接"clicked()"信号和show()槽.(图3)    <4>用同样的方法连接"Hide"的"clicked()"信号和"helloQT"的show()槽.最终效果如下所示.(图4)    (2)代码实现两者的连接    QObject::connect(a,SIGNAL(a_signal(int)),b,SLOT(b_slot(int)),Qt::ConnectionType);    <1>参数1:对象a    <2>参数2:对象a所发出的信号    <3>参数3:对象b    <4>参数4:对象b的槽,即对象b处理(对象a所发出的)信号的函数    <5>参数5:定义了信号与槽之间的关联.常选择默认值Qt::AutoConnection,也可以不写该参数.    【attention】    <1>一个信号可以连接多个槽.    <2>多个信号可以连接一个槽.    <3>一个信号可以与另外一个信号相连接.    <4>a_signal和b_slot中只能有参数类型,而非具体的值,且类型为Qt已知的类型.    <5>要将信号成功连接到槽或另外一个信号,它们的参数必须具有相同的类型和个数.若信号参数比槽的参数多,则多数的参数将被忽略.     【attention】    在Qt中,除了使用系统提供的信号和槽外,还可以使用程序员自己定义的信号与槽.它的实现过程如下:    <1>类的开始声明处加入宏Q_OBJECT.    <2>在函数声明前加入signals和slots关键字.    <3>信号只需声明,无需实现.使用时只需 emit mysignal(参数列表)    <4>槽函数和普通C++成员函数一样实现.    <5>自定义槽函数的另一种书写形式:       on_<sender_objectName>_<signal>(参数)    如:void on_pushButton_clicked()       对象名:pushButton   信号:clicked()    注意,这样书写的槽函数,系统会自动进行相对应信号与槽的连接,不需要connect.      【attention】QTimer定时器    QTimer *timer = new QTimer(this);    timer->start(1000);  /*定时器启动后,每隔1s发送一timeout()信号*/    timer->stop();         /*停止定时器*/  
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载