• 4850阅读
  • 8回复

信号与槽的连接问题 [复制链接]

上一主题 下一主题
离线interlc
 

只看楼主 倒序阅读 楼主  发表于: 2009-09-03
我用以下连接:connect(okButton, SIGNAL(clicked()), this, SLOT(addRules()));//okButton是界面上的按钮名字,但编译后程序能运行,但点击okButton没有引起addRules()的发生,系统提示是QObject::connect: Cannot connect (null)::clicked() to Rules::addRules(),搞不清楚是什么原因?
而且on_okButton_clicked()是可以调用的,我想用okButton引起两个槽(一个是on_okButton_clicked(),这个是系统自己链接的)的发生,所以另外自己又定义了一个connect,即是上面那一个,但是没用,WHY???
离线sdh-bing
只看该作者 1楼 发表于: 2009-09-03
确定connect之前已经okbutton = new QPushButton;了吗
离线john123
只看该作者 2楼 发表于: 2009-09-04
你就用這個就好
on_okButton_clicked()

為甚要用2個槽,用一個去呼叫就好了(另一個弄成函式,用槽去呼叫函式),簡單多了
离线interlc

只看该作者 3楼 发表于: 2009-09-04
引用第1楼sdh-bing于2009-09-03 22:06发表的  :
确定connect之前已经okbutton = new QPushButton;了吗

这个在ui_***.h里已经定义了吧
离线interlc

只看该作者 4楼 发表于: 2009-09-04
引用第2楼john123于2009-09-04 00:41发表的  :
你就用這個就好
on_okButton_clicked()
為甚要用2個槽,用一個去呼叫就好了(另一個弄成函式,用槽去呼叫函式),簡單多了

因为rules和on_okButton_clicked()不在一个类里,rules是在MainWindow.h里,而on_okButton_clicked()是在frame.h里,而且MainWindow.h里已经include frame.h了
如果我要在on_okButton_clicked()里实现,就需要在frame.h里include MainWindow.h,那不就乱了,我语言功底太差,不知道说明白没,我自己都乱了——\\
离线beajisong

只看该作者 5楼 发表于: 2009-09-04
因为你connect的时候okbutton是NULL
离线interlc

只看该作者 6楼 发表于: 2009-09-04
引用第5楼beajisong于2009-09-04 11:13发表的  :
因为你connect的时候okbutton是NULL

我知道啊,为什么是空呢
离线rqzrqh

只看该作者 7楼 发表于: 2009-09-04
贴代码
离线interlc

只看该作者 8楼 发表于: 2009-09-04
引用第7楼rqzrqh于2009-09-04 11:19发表的  :
贴代码

太多了,不在现在这个电脑上,我的电脑所在的网络上不了这个论坛,所以出来上的,下次组织一下贴出来
结构是三个类MainWindow,Form(QDialog),Rules,okButton在***.ui里(设计师做的),Form(QDialog),Rules都继承了ui里的类
有点事先走,回来再讲
快速回复
限100 字节
 
上一个 下一个