• 5519阅读
  • 6回复

聪明反被聪明误-信号与槽连接 [复制链接]

上一主题 下一主题
离线earctan
 

只看楼主 倒序阅读 楼主  发表于: 2008-12-19
— 本帖被 XChinux 执行加亮操作(2008-12-20) —
在一个QListWidget的派生类中,itemDoubleClicked( QListWidgetItem* ),信号总是不能与自定义的槽连接在一起。

想起以往的情况都是忘了写 Q_OBJECT宏,但是这次已经写了还是不行。

几经折磨之后才发现是我的槽函数 没有
public slots:
来定义。原来查看过singals 与 slots的宏定义是:
#  define slots
#  define signals protected
以为slots与signals只是起个提示程序员的作用,没想到对于MOC工具也有重要的提示作用,真是聪明反被聪明误。

P.S:以往记得有本书上说,信号与槽的参数要一样,经过验证后发现没有这个必要。我的Qt版本是4.4.3
离线nmiirq

只看该作者 1楼 发表于: 2008-12-19
是么?
参数可以不一致???
离线reclusun
只看该作者 2楼 发表于: 2008-12-19
lz用的什么编译器?
离线earctan

只看该作者 3楼 发表于: 2008-12-19
我用的是VC编译器。
离线xjcook

只看该作者 4楼 发表于: 2008-12-20
你不写成public slots:,moc咋知道你定义的是槽。
一定要写的,还要生成到 moc_xxxx.cpp里去
离线stdjgwyc
只看该作者 5楼 发表于: 2008-12-20
引用第1楼nmiirq于2008-12-19 16:57发表的  :
是么?
参数可以不一致???

是slot的参数少于等于信号的参数?
QT交流群群号:2906359,(200人大群,持续升级)
离线earctan

只看该作者 6楼 发表于: 2008-12-21
回复1楼的 nmiirq:
就像五楼说的,是信号的参数要多于槽的参数。为了保险起见今天又试了下,应该是这样的。

回复4楼的 xjcook:
兄台说的有道理,我就是对这个机制理解得还不深刻。

另外,为什么我不能引用,也不能编辑原帖。一点“引用”或者“编辑”就说让我登录,真奇怪。
只好这样回复了。
快速回复
限100 字节
 
上一个 下一个