首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >QFTP信号不会发出吗?

QFTP信号不会发出吗?
EN

Stack Overflow用户
提问于 2014-06-29 16:50:10
回答 1查看 516关注 0票数 0

您好,我已经写了一个简单的FTP代码上传图像到FTP服务器。

现在的问题是commandStarted(int)commandFinished(int,bool)信号永远不会发出!

我从qftp.pro抓取了这段代码,它附带了Qt库,在我的电脑上运行成功(它是一个gui程序),但是当我把这个ftp代码放到我的项目中时,它是一个控制台项目,它不能工作!

My.pro

代码语言:javascript
复制
QT       += core network
QT       -= gui
TARGET = FTP_PROJECT
CONFIG   += console
CONFIG   -= app_bundle

TEMPLATE = app

CONFIG += link_pkgconfig
PKGCONFIG += opencv


SOURCES += main.cpp \
    FTP_Class.cpp

HEADERS += \
    FTP_Class.h \
    Definitions.h

Main.cpp

代码语言:javascript
复制
#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

代码语言:javascript
复制
#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

代码语言:javascript
复制
#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

我可以使用qt示例项目和Filezilla连接到我的ftp服务器,Filezilla是一个FTP客户端软件,所以IP、用户名和密码都可以。(出于安全原因,我在此处更改了用户名和密码+ IP )

我的问题出在哪里?

EN

回答 1

Stack Overflow用户

发布于 2014-06-29 17:56:49

Using QFtp in a console app。你确定你的程序不工作吗(因为它是异步工作的)?此外,QT参考建议您应该使用QNetworkAccessManager和QNetworkReply。请参阅:http://qt-project.org/doc/qt-4.8/qftp.html#details

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24474528

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档