Qt中,为什么我的槽函数不响应?

用Qt5,定义的槽函数似乎无法调用,希望您能解答,谢谢!

出问题的main函数段如下(mine_area为按钮组):
for (i=0;i<row;i++)

for (j=0;j<column;j++)

{

Detect detect;

detect.Acquire(i,j,mine_map);

QObject::connect(mine_area[i][j],&QPushButton::clicked,&QPushButton::hide); //点击后按钮隐藏

QObject::connect(mine_area[i][j],&QPushButton::clicked,&detect,&Detect::React);//点击后触发React()

}//为每个按钮创立信号槽

Detect类的定义如下:
#ifndef MINEDETECT_H
#define MINEDETECT_H

#include <QObject>
#include <QDebug>

class Detect : public QObject
{

Q_OBJECT

public:

void React()

{

qDebug()<<"aa"; //通过这个来判断React()是否被调用,但实际上未见到aa的输出

}

void Acquire(int r, int c, int **p)

{

row=r;

column=c;

pointer=p;

}

private:

int row,column;

int **pointer;
};

#endif // MINEDETECT_H
hide可以触发,但React未被触发

首先建议你采取Qt4的写法,在定义槽函数时,加入public slots:、signals

然后,main函数中,在定义对象detect时,建议采取detect[100][100]的数组形式,因为你现在是要将每一个按钮与槽函数一一连接

还不行的话,建议重新码一遍代码,先从最简单的槽开始,一点一点加大难度,这样也方便分析出究竟是哪里出了问题。

望采纳。
温馨提示:内容为网友见解,仅供参考
无其他回答

Qt中,为什么我的槽函数不响应?
首先建议你采取Qt4的写法,在定义槽函数时,加入public slots:、signals 然后,main函数中,在定义对象detect时,建议采取detect[100][100]的数组形式,因为你现在是要将每一个按钮与槽函数一一连接 还不行的话,建议重新码一遍代码,先从最简单的槽开始,一点一点加大难度,这样也方便分析出究竟是哪里出...

为什么我用qt读取串口设置的信号和槽函数不触发
进程肯定不会产生了。Qt的信号槽是个很复杂的机制,哥大致给你介绍一下Qt的信号槽既可以同步触发,也可以异步触发。当你进行connect的时候,实际上还有第五个参数(可以自己看SDK的介绍)。如果说是默认的,那么要看信号和槽是否属于同一个线程......

qt自定义槽函数不起作用
void closeBtn1_clicked() ;一定要在前面添加Q_SLOT 宏表示这个是一个槽函数,否则系统无法执行关联操作。或者在定义的时候加入下面标记也可以:1、 Q_SLOT void closeBtn1_clicked() ;或者 private slots:void closeBtn1_clicked() ;

在QT里面信号和槽已经建立了,但是却没有用,这是为什么?
跟踪调试一下,看看是没有发射信号,还是信号发射后,槽函数没有被执行,或者是槽函数没有正确的执行.

qt中用信号和槽导致程序挂掉,如何解决?
在槽函数内分配的内存未释放,形成内存泄漏。使用智能指针或手动管理内存,确保所有动态内存得到正确释放。总结:程序异常多因逻辑或内存管理不当。针对Qt中信号槽问题,采取相应解决措施,确保程序稳定性。开发中应充分调试与测试,提高程序质量。Qt中信号和槽机制,允许组件间高效通信。实现如文件操作、菜单...

自己定义的槽函数是不是哪里不对了,为什么不能执行
Qt?一般来说自定义槽(SLOT)和其它函数没什么两样,它的特点在于能和消息(SIGNAL)连接起来发挥作用

谁帮我看看我的QT代码,槽总是接收不到信号,我写个简单的都不行。麻 ...
int main(int argc, char *argv[]){ QApplication a(argc, argv);MainWindow w;w.show();\/\/窗口没有销毁,会在这阻塞,线程对象没有创建出来,自然接收不到信号。\/*定义一个线程,并且启动一个线程*\/ MyThread receive_data;receive_data.start();return a.exec();} ...

qt 发射信号,槽接收不到这是怎么回事,各位大神求指导
原则上说应该不会出现上述情况的,请检查信号发射的条件和逻辑,然后在槽函数里面多添加打印测试。如果还是不行,请贴下关联的代码,我帮你分析。

qt中添加查找槽的时候ui::dialog定义找不到是什么原因
我的也常出现这种情况,添加不来槽函数。清除工程,关闭工程,然后就行了。你试试看!

QT编程中信号与槽遇到的参数传递问题,如下
你这里槽函数里面有形参 但信号里面并没有传递过来 所以就连接不到一起 而且连接的时候只要写明参数的类型就可以了 你这里tcpsocket应该是对象名吧 这样就不对了 举个例子 connect(btn, SIGNAL( clicked(bool) ), this, SLOT( onClicked( bool ) ));...

相似回答