No such Slot/Signals (Qt)

后端 未结 2 720
被撕碎了的回忆
被撕碎了的回忆 2020-12-12 07:45

Object::connect: No such signal RollsRoyceTab::signal_aValueChange(int aValue) ??????

I have

class RollsRoyceTab : public QWidget
 {
     Q_OBJECT
 p         


        
相关标签:
2条回答
  • 2020-12-12 08:15

    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.

    0 讨论(0)
  • 2020-12-12 08:17

    "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!

    0 讨论(0)
提交回复
热议问题