博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第四讲 深入介绍信号与槽
阅读量:5078 次
发布时间:2019-06-12

本文共 1206 字,大约阅读时间需要 4 分钟。

本文概要:讲解Qt的信号与槽机制,涉及信号与槽的连接方法,连接条件等。

 

可以使用信号与槽机制的类

信号与槽机制是在QObject类中实现的,这种机制能够用与任何QObject子类中,但是应该在类中加入Q_OBJECT宏。

 

槽的介绍

槽与普通的c++成员函数几乎一样;槽能够被声明为虚函数,能被重载,能够被其他函数调用等,与c++普通

的成员函数不同之处仅仅在于槽可以与信号连接在一起,每当发射与槽可以接受的信号时,槽会被自动调用。

 

 

 

槽与信号的连接方法:

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

sender和receiver都应该为指向QObject的指针,signal与slot为不带参数的函数名;SIGNAL与SLOT宏会将它们的参数转换为相应的字符串。

 

槽与信号连接的可能情况:

一个信号连接多个槽

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

当发射信号时,会以不确定的顺序调用这些槽;

 

 

多个信号连接一个槽

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

无论发射那个信号都会调用连接的槽;

 

 

信号可以与另外一个信号连接:

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

当发射第一个信号时,第二个信号也会被发送,除此之外,信号的相互连接与信号与槽的连接难以区分。

 

信号与槽(或者信号)的连接可以被移除

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

一般情况下较少用到。另外,当删除对象时,Qt会自动与这个对象相关的所有连接;

 

信号与槽(或者信号)成功连接的条件

信号与槽的顺序必须有相同的顺序与相同的类型,如果信号的参数比它所连接的槽的参数多,多余的参数会被忽略。另外,在信号与槽使用connect()连接时,

信号与槽的名字中不能包含参数名。

 

转载于:https://www.cnblogs.com/tallisHe/p/4419168.html

你可能感兴趣的文章
git .gitignore 文件不起作用
查看>>
Alan Turing的纪录片观后感
查看>>
c#自定义控件中的事件处理
查看>>
django Models 常用的字段和参数
查看>>
IOS--沙盒机制
查看>>
使用 JointCode.Shuttle 访问任意 AppDomain 的服务
查看>>
sqlite的坑
查看>>
digitalocean --- How To Install Apache Tomcat 8 on Ubuntu 16.04
查看>>
【题解】[P4178 Tree]
查看>>
Jquery ui widget开发
查看>>
关于indexOf的使用
查看>>
英语单词
查看>>
Mongo自动备份
查看>>
cer证书签名验证
查看>>
新手Python第一天(接触)
查看>>
【bzoj1029】[JSOI2007]建筑抢修
查看>>
synchronized
查看>>
codevs 1080 线段树练习
查看>>
[No0000195]NoSQL还是SQL?这一篇讲清楚
查看>>
【深度学习】caffe 中的一些参数介绍
查看>>