i have no clue why happening. have extended qobject , added macro q_object. signal , slot both has same parameter.
i have posted original question
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
Post a Comment