回复: 找了一上午问题了,实在是不知道错在哪啊,请帮忙给看看
#6 回 5楼(jdwx) 的帖子 [sdyansong 08-08 14:06]
哦,歇息您,我试试吧,如果您有时间能否告诉我怎么改上面的程序,我现在不知道怎么改。
#7 回 6楼(sdyansong) 的帖子 [sdyansong 08-08 14:08]
谢谢您,非产感谢您
#8 [zheguzai 10-29 19:26]
还是我来说吧
问题出在你下面这句上
connect(this,SIGNAL(ChildWindowEvent()),this,SLOT(Button_clicked()));
看了下你的代码很明显你的ChildWindowEvent()信号时定义在menu类当中的,但是你在写connect函数的时候,第一个参数写的却是this,你要清楚这里的this指的就是mainwindow类,请问你的mainwindow类中有ChildWindowEvent()信号吗?肯定是没有的,所以你如果想要在mainwindows中接受menu发送来的信号,就得在mainwindow类中定义一个menu的对象,然后在connect的时候第一个参数写成menu对象指针,就不会错了,举个例子给你看看
Menu*mymenu =new Menu();
connect(mymenu ,SIGNAL(ChildWindowEvent()),this,SLOT(Button_clicked()));
这样就不会错了,你的mymenu是Menu对象,它才有ChildWindowEvent()信号,后面的this代表mainwindow类,它也有Button_clicked()槽,这样连接就没有错误了,才可以正确运行。。。
如果还不理解,好好看看信号和槽的关系,怎么把不同类的信号发送到另外一个类中,
其实就是一个类发送信号,另一个类去处理,但是在写connect的时候,前面两个参数代表发送的类,发送的对象要具有发送的信号,后面两个参数代表接收的类,接收的类也要有接收的slot函数
其实也可以再第三个类中接收第一个类传过来的信号,让第二个类去处理,这种复杂的也是可以实现的。
//此对象用于发送ChildWindowEvent()信号
Menu*mymenu =new Menu();
//此对象用于接收信号,并用SampleDoSomething()槽去处理
Samle *mysample = new Sample();
connect(mymenu ,SIGNAL(ChildWindowEvent()),mysample ,SLOT(SampleDoSomething()));
#9 [nxqzk 01-14 16:50]
Q2648038977
#10 [枫界易城 05-01 23:05]
学习了,,,,,,,,