c++ - QObject:connect No such slot issue -


i have no clue why happening. have extended qobject , added macro q_object. signal , slot both has same parameter.

i have posted original question

http://supportforums.blackberry.com/t5/cascades-development/object-connect-no-such-slot-problem/m-p/2486753

this hpp file,

/*  * locationmonitor.hpp  *  *  created on: jul 13, 2013  *      author: roland  */  #ifndef locationmonitor_hpp_ #define locationmonitor_hpp_  #include  #include  #include   using namespace qt; using namespace qtmobilitysubset; class geonotification; class locationmonitor : public qobject {     q_object public:     locationmonitor(int id,geonotification *geonotification,qvariantlist locationlist,qvariantlist actionlist);     virtual ~locationmonitor();  public slots:     void areaenteredd(qtmobilitysubset::qgeopositioninfo info);     void areaexitedd(qtmobilitysubset::qgeopositioninfo info);  public:     qgeoareamonitor *monitor; };  #endif /* locationmonitor_hpp_ */

this cpp file

/*  * locationmonitor.cpp  *  *  created on: jul 13, 2013  *      author: roland  */  #include "locationmonitor.hpp"  locationmonitor::locationmonitor(int id,geonotification *geonotification,qvariantlist locationlist,qvariantlist actionlist): geonotification(geonotification) {     monitor = qgeoareamonitor::createdefaultmonitor(this);     qobject::connect(monitor, signal(areaentered(qgeopositioninfo)),this, slot(areaenteredd(qgeopositioninfo)));     qobject::connect(monitor, signal(areaexited(qgeopositioninfo)),this, slot(areaexitedd(qgeopositioninfo))); } locationmonitor::~locationmonitor() {}  void locationmonitor::areaenteredd(qgeopositioninfo info) { } void locationmonitor::areaexitedd(qgeopositioninfo info) { }

api doc link in here

thanks.

you need use same name everywhere: in signal declaration, in slot declaration , in connect. because connect() mechanism based on textual comparison.

as original signal declared const qgeopositioninfo & parameter, need set this, , this, too.

here declarations should use:

    // header     public slots:         void areaenteredd(const qgeopositioninfo& info);         void areaexitedd(const qgeopositioninfo& info);      // cpp     void locationmonitor::areaenteredd(const qgeopositioninfo& info)     {     }     void locationmonitor::areaexitedd(const qgeopositioninfo& info)     {     }     // connects     qobject::connect(monitor, signal(areaentered(const qgeopositioninfo&)),this, slot(areaenteredd(const qgeopositioninfo&)));     qobject::connect(monitor, signal(areaexited(const qgeopositioninfo&)),this, slot(areaexitedd(const qgeopositioninfo&))); 

note you'll have use qtmobilitysubset namespace in header, bad. can limit scope need: using ::qtmobilitysubset::qgeopositioninfo; instead of full using namespace qtmobilitysubset;.


Comments