QT 开发中 槽函数 slot的问题“no such slot”

QT 开发中 槽函数 slot的问题“no such slot”

报错

正常添加槽函数

connect(ui->runAddFeatures, SIGNAL(clicked(bool)), this, SLOT(addFeatures()));

运行后点击按钮(事件addFeatures())后没反应,看一眼输出,内容是
在这里插入图片描述

解决方法

其实 谜底写在了谜面上
她说没有slot 说明我们的slot没有声明正确,但是不是cpp文件里,而是在头文件中。
我一开始没有加public slots:,而是直接把函数定义在public下面 这是不对的。

class AddFeaturesWin : public QWidget
{
	Q_OBJECT

public:
	AddFeaturesWin(QgsMapCanvas* canvas, QList<QgsMapLayer *> mapCanvasLayerSet, QWidget *parent = nullptr);
	~AddFeaturesWin();

public slots:
	//添加矢量要素
	void addFeatures();
	、、、、其他代码、、、、、、
	}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 这个错误通常发生在以下情况下: 1. 你的函数的名称不正确,可能是拼写错误或大小写不匹配。确保你的函数的名称和声明完全一致。 2. 函数的参数类型不正确。你的函数的参数类型必须与信号的参数类型完全匹配,包括参数的名称和顺序。 3. 你的函数没有在类的头文件或源文件声明或实现。请检查一下你的头文件或源文件是否有正确的函数声明或实现。 4. 如果你的函数是在一个独立的类实现的,你可能需要将其注册到QMetaObject系统,以便Qt可以找到它。可以使用Q_OBJECT宏来自动完成这个过程。 如果以上步骤都正确,但仍然出现该错误,请检查一下是否存在其他问题,如QObject子类的正确声明等。 ### 回答2: 出现"No such slot QSlider::on_setLineEditValue(QString)"的错误提示,通常是因为以下几个原因: 1. 函数的声明不正确:可能是函数的名称拼写错误或者参数列表不匹配。请仔细检查你声明的函数是否与出现错误的提示一致。 2. 函数未在类的头文件声明为函数:如果你使用Qt机制,要确保在类的头文件将该函数声明为函数,使用`slots`关键字进行声明。 3. 函数未在类的实现文件实现:请确保函数在类的实现文件有对应的实现。你可以通过检查函数的实现文件,查看是否有与声明一致的函数实现。 4. 函数的参数类型与信号发射时的参数类型不匹配:请确保信号和之间的参数类型是一致的。 5. 编译时未正确连接信号和:如果使用Qt的信号和机制,需要在合适的地方使用`connect`函数将信号和进行连接。确保信号和之间的对象是正确的,并且连接语句是正确的。 总之,出现"No such slot"错误提示可能有多种原因。你需要仔细检查函数的声明、实现和连接是否正确,并确保信号和之间的参数类型一致。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值