• 3270阅读
  • 9回复

奇怪的代码。。。 [复制链接]

上一主题 下一主题
离线iiiyyyhhhsss
 

只看楼主 倒序阅读 楼主  发表于: 2009-09-05
connect(m_ui->pushButton,SIGNAL(clicked()),this->m_ui->checkBox2,SLOT(setEnabled(bool)));

这行代码为什么能够通过编译?最后的bool不是要具体的true或false值吗?

而且当我写true或false上去的时候,却反而有问题。。。
离线dbzhang800

只看该作者 1楼 发表于: 2009-09-05
To successfully connect a signal to a slot (or to another signal), they must have the same parameter types in the same order:

  1. connect(ftp, SIGNAL(rawCommandReply(int, const QString &)),
  2.         this, SLOT(processReply(int, const QString &)));




Exceptionally, if a signal has more parameters than the slot it is connected to, the additional parameters are simply ignored:

  1. connect(ftp, SIGNAL(rawCommandReply(int, const QString &)),
  2.          this, SLOT(checkErrorCode(int)));



If the parameter types are incompatible, or if the signal or the slot doesn't exist, Qt will issue a warning at run-time if the application is built in debug mode. Similarly, Qt will give a warning if parameter names are included in the signal or slot signatures.
离线iiiyyyhhhsss

只看该作者 2楼 发表于: 2009-09-05
原来是这样的原因,也就是说如果参数列表不一样,强行使用connect也是不起作用的了。。。。可以这样解释吗?

当然我可以自定义一个槽,使参数列表一样,然后把要实现的东西放在槽里面就OK了,是吧。。。
离线rqzrqh

只看该作者 3楼 发表于: 2009-09-06
引用第2楼iiiyyyhhhsss于2009-09-05 23:39发表的  :
原来是这样的原因,也就是说如果参数列表不一样,强行使用connect也是不起作用的了。。。。可以这样解释吗?
当然我可以自定义一个槽,使参数列表一样,然后把要实现的东西放在槽里面就OK了,是吧。。。

恩。这个方法比较常用
离线iiiyyyhhhsss

只看该作者 4楼 发表于: 2009-09-06
那么我想问问,是否可以自定义信号呢?如何使程序发出一个我自定义的信号呢?
离线rqzrqh

只看该作者 5楼 发表于: 2009-09-06
引用第4楼iiiyyyhhhsss于2009-09-06 08:52发表的  :
那么我想问问,是否可以自定义信号呢?如何使程序发出一个我自定义的信号呢?

可以
离线iiiyyyhhhsss

只看该作者 6楼 发表于: 2009-09-06
为什么我声明信号的时候,却有错误呢?

可否简单给个格式看看?

信号是否不能定义为私有?

还有就是信号的类型可以定义为void吗?
离线rqzrqh

只看该作者 7楼 发表于: 2009-09-06
signals:
离线iiiyyyhhhsss

只看该作者 8楼 发表于: 2009-09-06
是默认public吗?
离线rqzrqh

只看该作者 9楼 发表于: 2009-09-06
信号不管接收方是谁。谁定义就谁发信号
快速回复
限100 字节
 
上一个 下一个