所以我是C#开发人员,我正在学习C ++(作为业余爱好)。
我使用Qt,为了练习,我想创建一个FTP客户端,但我有一个问题。
我在ftp连接状态发生变化时创建了一个事件,所以我想使用事件stateChanged(int)
但我有一个问题:
Error: no matching function for call to 'QObject::connect(QFtp*&, const char*, Ftp* const, const char*)'
我的代码:
#include "ftp.h"
QString _host;
QString _User;
QString _Pass;
Ftp::Ftp(QObject *parent,QString host,QString user,QString pass)
{
ftp =new QFtp(parent);
QObject::connect(ftp,SIGNAL(stateChanged(int)),this,SLOT(FtpStateChang(int)));
_host = host;
_User = user;
_Pass = pass;
}
void Ftp::Connect()
{
ftp->connectToHost(_host,21);
ftp->login(_User,_Pass);
}
void Ftp::FtpStateChang(int state)
{
//EVENT
}
QString Ftp::CheckConnection()
{
Connect();
switch(ftp->state())
{
case QFtp::LoggedIn:
return "LoggedIn";
case QFtp::Unconnected:
return "Unconnected";
case QFtp::Connecting:
return "Connecting";
case QFtp::Closing:
return "Closing";
}
}
请告诉我原因。谢谢你的帮助。
答案 0 :(得分:0)
是的,如果您忘记了,请继承QObject
,并且不要忘记将Q_OBJECT
宏放入类定义的private
部分(因为您声明了自己的广告位)< / p>