QT中MainWindow向Parameters对话框传数据失败,出现槽函数不存在错误
QT信号槽连接失败:MainWindow向Parameters对话框传值问题
问题情况
想实现MainWindow给Parameters对话框传数据,但代码运行后无预期效果,还弹出错误提示:
QObject::connect: 不存在槽函数 parameters::recieved()
QObject::connect: (接收者名称: 'parameters')
涉及的代码如下:
MainWindow.h 中的信号定义
signals: void send_data(QString a);
MainWindow.cpp 中的连接代码与信号发射函数
QObject::connect(this, &MainWindow::send_data, Parameters, ¶meters::recieved); void MainWindow::showtime(){ emit send_data(travel_c); }
Parameters对话框的槽函数声明与实现
public slots: void revieved(QString a); void parameters::recieved(QString a) { ui->START_DELAY->setText(a); qDebug()<<"Recieved"<<a; }
问题原因与修复方法
槽函数拼写不统一:槽函数声明写的是
revieved,但实现和连接时用的是recieved,名字不匹配导致QT找不到对应槽函数。
修复:将声明改为void recieved(QString a);,保证声明、实现、连接代码中的函数名完全一致。额外检查项:
- 确保
parameters类已添加Q_OBJECT宏,且重新执行qmake后再编译项目(这是QT类使用信号槽机制的基础要求)。 - 确认
Parameters是parameters类的有效实例,避免空指针导致连接失败。
- 确保
修复后的槽函数声明示例
public slots: void recieved(QString a); // 与实现、连接代码的函数名统一
内容的提问来源于stack exchange,提问作者Tron Zu
相关产品推荐
相关产品推荐

