
信号和槽如果要传递参数就要确保参数类型和个数的一致 你这里槽函数里面有形参 但信号里面并没有传递过来 所以就连接不到一起
而且连接的时候只要写明参数的类型就可以了 你这里tcpsocket应该是对象名吧 这样就不对了 举个例子 connect(btn, SIGNAL( clicked(bool) ), this, SLOT( onClicked( bool ) ));
首先建议你采取Qt4的写法,在定义槽函数时,加入public slots:、signals
然后,main函数中,在定义对象detect时,建议采取detect[100][100]的数组形式,因为你现在是要将每一个按钮与槽函数一一连接
还不行的话,建议重新码一遍代码,先从最简单的槽开始,一点一点加大难度,这样也方便分析出究竟是哪里出了问题。
望采纳。
头文件在类里这样定义:
private slots:
void yourslot(); //实现函数自己定义
signals:
void yoursignal();
源文件:
connect(this, SIGNAL(yoursignal()), this, SLOT(yourslot())); //链接起来
使用的时候直接emit yoursignal();
这样就会调用yourslot()函数了。
进程肯定不会产生了。Qt的信号槽是个很复杂的机制,哥大致给你介绍一下Qt的信号槽既可以同步触发,也可以异步触发。当你进行connect的时候,实际上还有第五个参数(可以自己看SDK的介绍)。如果说是默认的,那么要看信号和槽是否属于同一个线程(这里,你可以简单理解为是否是同一个类),然后根据connect的第五个属性来判断是否是同步还是异步。比如BlockingQueuedConnection模式,就会出现你说的多次触发信号阻塞问题,他只有等到上一个触发完成才能继续。槽函数不会产生新线程,他是决定了槽函数声明在哪个线程中,如果默认情况下,在同一个线程里面是同步的,你此时可以理解为普通调用,如果在不同线程里面,槽函数运行的线程通常是异步调用,但是还有一个所谓的事件中心一直run着在处理,就是一个信号队列,没触发一个信号就入队列,先进先出。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)