QFTP сигналы не излучаются?

Привет, я написал простой FTP-код для загрузки изображений на FTP-сервер.

Теперь проблема в том, что commandStarted(int) а также commandFinished(int,bool) сигналы никогда не излучаются !!!

Я взял этот код из qftp.pro, который поставляется с библиотекой Qt и успешно работает на моем компьютере (это программа с графическим интерфейсом). Но когда я помещаю этот код ftp в мой проект, который является консольным проектом, он не работает !! !

My.pro

QT       += core network
QT       -= gui
TARGET = FTP_PROJECT
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

CONFIG += link_pkgconfig
PKGCONFIG += opencvSOURCES += main.cpp \
FTP_Class.cpp

HEADERS += \
FTP_Class.h \
Definitions.h

main.cpp

#include <QCoreApplication>
#include "FTP_Class.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
FTP_Class u;
return a.exec();
}

FTP_Class.cpp

#include "FTP_Class.h"
FTP_Class::FTP_Class(QObject *parent) :
QObject(parent)
{ftp = new QFtp(this);
connect(ftp,SIGNAL(commandStarted(int)),this,SLOT(ftpStartedCommand(int)));
connect(ftp, SIGNAL(commandFinished(int,bool)),this, SLOT(ftpCommandFinished(int,bool)));QUrl url("12.128.32.54");
//if (!url.isValid() || url.scheme().toLower() != QLatin1String("ftp"))
{
ftp->connectToHost("12.128.32.54", 21);
ftp->login("Hidden","[STr_9&65%Est@@]");
}}
void FTP_Class::ftpStartedCommand(int id)
{

qDebug()<<"Command with ID "<<QString::number(id)<<" is started";
}

void FTP_Class::ftpCommandFinished(int, bool error)
{
if (ftp->currentCommand() == QFtp::ConnectToHost) {
if (error) {
qDebug()<< " Unable to connect to the FTP server Please check that the host name is correct";
ftp->abort();
ftp->deleteLater();
return;
}
}
if(ftp->currentCommand() == QFtp::Cd)
{
static bool enable = false;
if(enable)
{

QByteArray ImAgE = ReadImage(); //reads from external library

QString Final_Time = "Image.jpg";
ftp->put(ImAgE,Final_Time);
}
enable=true;
}
if(ftp->currentCommand() == QFtp::Mkdir)
{
qDebug()<<"Going to dest folder";
ftp->cd("Test");

}
if(ftp->currentCommand() == QFtp::Login)
{
ftp->cd("Image_Folder");
qDebug()<<"creating dest folder";
ftp->mkdir("Test");
}
if(ftp->currentCommand()== QFtp::Put)
{
if (error) {
qDebug()<<"Error in Uploading ...";
} else {
qDebug("Upload is completed ...");
}
}
return;
}

FTP_Class.h

#ifndef UPLOADER_H
#define UPLOADER_H

#include "Definitions.h"class FTP_Class: public QObject
{
Q_OBJECT
public:
explicit FTP_Class(QObject *parent = 0);
QFtp *ftp;
public slots:

void ftpCommandFinished(int,bool);
void ftpStartedCommand(int id);
private:
};

#endif // UPLOADER_H

Я могу подключиться к своему ftp-серверу, используя пример проекта qt, а также Filezilla, которая является клиентским программным обеспечением FTP, так что IP, имя пользователя и пароли в порядке. (из соображений безопасности я сменил здесь имя пользователя и пароли + IP)

В чем моя проблема здесь?

0

Решение

Использование QFtp в консольном приложении. Вы уверены, что ваша программа не работает (так как она работает асинхронно)? Более того, ссылка на API QT предполагает, что вы должны вместо этого использовать QNetworkAccessManager и QNetworkReply. Увидеть: http://qt-project.org/doc/qt-4.8/qftp.html#details

0

Другие решения


По вопросам рекламы [email protected]