No such Slot/Signals (Qt)

让人想犯罪 __ 提交于 2019-11-28 14:41:28

First: signals and slots in QObject::connect() should be without variables names.

Second: You can't connect signal with one argument with SLOT with three arguments. SIGNAL must not have fewer arguments than the SLOT.

It should be for e.g.:

connect(this,SIGNAL(signal_aValueChange(int)),this,SLOT(rrValuesHolder(int)));

And it's simply explanation for that. If you emit signal with one argument (for e.g. QString) how would slot know what are others two arguments? For me it's logical.

"SIGNAL() macro must NOT have fewer arguments than the signature passed to the SLOT() macro.

All of these would work:

connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed(Qbject*)));
connect(sender, SIGNAL(destroyed(QObject*)), this, SLOT(objectDestroyed()));
connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed()));

This does not work:

connect(sender, SIGNAL(destroyed()), this, SLOT(objectDestroyed(QObject*)));

I believe you should call as value SLOT(rrValuesHolder(int))

Reference: http://qt-project.org/doc/qt-4.8/signalsandslots.html

EDIT: Blood included one additional piece of information that I neglected, Signals and Slots should be connected without variable names!

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!