一、问题与答案
1、编译器报告未找到connect()函数,为什么?
答:如果调用connect()函数而未定义从哪个类中查找它,将出现这种错误。这种调用必须在一个QObject派生类的方法内。如果从一个外部函数中调用,必须这样:
QObject::connect();
2、编译器报告传递给connect()函数的参数错误,这是为什么?
答:connect()函数参数使用对象指针,而不是对象自身。因此,必须确认所提供的参数是正确的。
二、测试
1、什么是槽?
答:槽是一种特殊类型的成员函数,它可以被连接到信号。当发射信号时,槽(函数)将被执行。
2、什么是信号?
答:信号是一种特殊类型的函数,它可以被连接到槽。当某个事件发生时,信号通知槽,之后,槽被执行。
3、怎样将信号连接到槽?
答:使用QObject::connect()函数。
4、能否将多个槽连接到一个信号?
答:这是可能的。只需为每次连接调用一次connect()函数。
5、什么时候能够调用connect()函数而不指定定义它的类?
答:当从派生与QObject或其子类的类成员函数中调用时。
6、能够将被连接的信号与槽断开吗?
答:这是可以的。只需使用QObject::disconnect()函数。
7、在调用connect()函数时,省略槽所属对象名称意味着什么?
答:意味着槽在当前类中定义(也就是说,类是当前所定义类)。因此。只能从具有槽的类成员函数中执行这类调用。
8、是否能够将一个信号连接到其他信号?如果能,怎么操作?
答:可以。只需像通常一样使用connect()函数,如
connect(button,SIGNAL(clicked()),this,SIGNAL(anothersignal());