Qt probleempje
Posted: Tue Apr 07, 2009 4:31 pm
Ik ben voor Netwerk Protocols met Qt bezig en ik ben een probleem tegengekomen met signals en slots. In de hoop dat er hier een paar verdoken Qt-guru's rondhangen, leg ik het even uit 
Ik heb in een al bestaande werkende klasse een slot onNewPeer(Peer*) toegvoegd en in mijn code connect ik dit slot aan een signal newPeer(Peer*). Als ik dan de code compileer en de executable uitvoer, geeft hij een melding dat hij het slot niet kan vinden, meer bepaald:
De header voor de betrokken klasse...
en de enige plaats waar de connect in kwestie gebeurt...
Heeft iemand al eens iets gelijkaardig meegemaakt en het opgelost gekregen? Of kan iemand me vertellen waarom de connect niet gedaan word?
Als er iets niet duidelijk is, vraag me gerust om verduidelijking
BTW: de betreffende slot private maken of een andere naam geven heb ik al geprobeerd, geeft net hetzelfde probleem

Ik heb in een al bestaande werkende klasse een slot onNewPeer(Peer*) toegvoegd en in mijn code connect ik dit slot aan een signal newPeer(Peer*). Als ik dan de code compileer en de executable uitvoer, geeft hij een melding dat hij het slot niet kan vinden, meer bepaald:
Code: Select all
Object::connect: No such slot kt::ZeroConfPlugin::onNewPeer(Peer*)
Code: Select all
class ZeroConfPlugin : public Plugin
{
Q_OBJECT
public:
ZeroConfPlugin(QObject* parent, const QStringList& args);
virtual ~ZeroConfPlugin();
virtual void load();
virtual void unload();
virtual bool versionCheck(const QString& version) const;
public slots:
void onNewPeer(bt::Peer* p);
private slots:
void torrentAdded(bt::TorrentInterface* tc);
void torrentRemoved(bt::TorrentInterface* tc);
void avahiServiceDestroyed(TorrentService* av);
private:
bt::PtrMap<bt::TorrentInterface*,TorrentService> services;
};
Code: Select all
void ZeroConfPlugin::torrentAdded(bt::TorrentInterface* tc)
{
if (services.contains(tc))
return;
TorrentControl* control = dynamic_cast<TorrentControl*>(tc);
const PeerManager* pman = control->getPeerMgr();
bool verbonden = connect(pman,SIGNAL(newPeer(Peer* )),
SLOT(onNewPeer(Peer* )));
Out(SYS_ZCO|LOG_DEBUG) << "ZeroConf could " << (verbonden?"":"not ") << "connect newPeer to onNewPeer" << endl;
TorrentService* av = new TorrentService(tc);
services.insert(tc,av);
tc->addPeerSource(av);
Out(SYS_ZCO|LOG_NOTICE) << "ZeroConf service added for " << tc->getStats().torrent_name << endl;
connect(av,SIGNAL(serviceDestroyed( TorrentService* )),
this,SLOT(avahiServiceDestroyed( TorrentService* )));
}
Als er iets niet duidelijk is, vraag me gerust om verduidelijking

BTW: de betreffende slot private maken of een andere naam geven heb ik al geprobeerd, geeft net hetzelfde probleem
