How can i get ftp files show on my list widget using QNetworkAccessManager Qt 5.8?
- 
Open the project .pro file with Qt Creator and build it. By the way, what OS are you on ? 
- 
Which version of Qt are you using to build that module ? 
- 
Did you install the module ? 
- 
Did you add QT += ftpto your .pro file and re-run qmake after that ?
- 
yes. But commandFinshed signal does not work. here is my code: FtpDialog.h #ifndef FTPDIALOG_H 
 #define FTPDIALOG_H#include <QDialog> 
 #include <QFtp>
 #include <QMessageBox>
 #include <QDebug>namespace Ui { 
 class FtpDialog;
 }class FtpDialog : public QDialog 
 {
 Q_OBJECTpublic: 
 explicit FtpDialog(QWidget *parent = 0);
 ~FtpDialog();public slots: 
 void connectClicked();
 void ftpFinished(int, bool);
 void getFileList();
 signals:private: 
 Ui::FtpDialog *ui;
 QFtp ftp;
 };#endif // FTPDIALOG_H 
- 
FtpDialog.cpp #include "ftpdialog.h" 
 #include "ui_ftpdialog.h"FtpDialog::FtpDialog(QWidget *parent) : 
 QDialog(parent),
 ui(new Ui::FtpDialog)
 {
 ui->setupUi(this);
 connect(ui->connectButton, SIGNAL(clicked()), this, SLOT(connectClicked()));
 connect(&ftp,SIGNAL(commandFinished(int,bool)), this, SLOT(ftpFinished(int,bool)));ui->disconnectButton->setEnabled(false); ui->cdButton->setEnabled(false); ui->upButton->setEnabled(false); ui->getButton->setEnabled(false);} FtpDialog::~FtpDialog() 
 {
 delete ui;
 }void FtpDialog::connectClicked() 
 {
 ui->connectButton->setEnabled(false);ftp.connectToHost("ftp.trolltech.com"); ui->statusLabel->setText(tr("Connecting to host..."));} void FtpDialog::ftpFinished(int request, bool error) 
 {
 // Handle errors depending on the command caussing it
 qDebug()<<ftp.currentCommand();
 if(error)
 {
 switch(ftp.currentCommand())
 {
 case QFtp::ConnectToHost:
 QMessageBox::warning(this, tr("Error"), tr("Failed to connect to host."));
 ui->connectButton->setEnabled(true);break; case QFtp::Login: QMessageBox::warning(this, tr("Error"), tr("Failed to login.")); ui->connectButton->setEnabled(true); break; case QFtp::List: QMessageBox::warning(this, tr("Error"), tr("Failed to get file list.\nClosing connection")); ftp.close(); break; } ui->statusLabel->setText(tr("Ready."));} 
 // React to the current command and issue
 // more commands or update the user interface
 else
 {
 switch(ftp.currentCommand())
 {
 case QFtp::ConnectToHost:
 ftp.login();break; case QFtp::Login: getFileList(); break; case QFtp::Close: ui->connectButton->setEnabled(true); // getFileList(); break; case QFtp::List: ui->disconnectButton->setEnabled(true); ui->upButton->setEnabled(true); ui->statusLabel->setText(tr("Ready.")); break; } }} void FtpDialog::getFileList() 
 {} 
- 
yes. But commandFinshed signal does not work. here is my code: FtpDialog.h #ifndef FTPDIALOG_H 
 #define FTPDIALOG_H#include <QDialog> 
 #include <QFtp>
 #include <QMessageBox>
 #include <QDebug>namespace Ui { 
 class FtpDialog;
 }class FtpDialog : public QDialog 
 {
 Q_OBJECTpublic: 
 explicit FtpDialog(QWidget *parent = 0);
 ~FtpDialog();public slots: 
 void connectClicked();
 void ftpFinished(int, bool);
 void getFileList();
 signals:private: 
 Ui::FtpDialog *ui;
 QFtp ftp;
 };#endif // FTPDIALOG_H @walter-j You should connect a slot to http://doc.qt.io/qt-4.8/qftp.html#stateChanged and see what happens 
- 
FtpDialog.cpp #include "ftpdialog.h" 
 #include "ui_ftpdialog.h"FtpDialog::FtpDialog(QWidget *parent) : 
 QDialog(parent),
 ui(new Ui::FtpDialog)
 {
 ui->setupUi(this);
 connect(ui->connectButton, SIGNAL(clicked()), this, SLOT(connectClicked()));
 connect(&ftp,SIGNAL(commandFinished(int,bool)), this, SLOT(ftpFinished(int,bool)));ui->disconnectButton->setEnabled(false); ui->cdButton->setEnabled(false); ui->upButton->setEnabled(false); ui->getButton->setEnabled(false);} FtpDialog::~FtpDialog() 
 {
 delete ui;
 }void FtpDialog::connectClicked() 
 {
 ui->connectButton->setEnabled(false);ftp.connectToHost("ftp.trolltech.com"); ui->statusLabel->setText(tr("Connecting to host..."));} void FtpDialog::ftpFinished(int request, bool error) 
 {
 // Handle errors depending on the command caussing it
 qDebug()<<ftp.currentCommand();
 if(error)
 {
 switch(ftp.currentCommand())
 {
 case QFtp::ConnectToHost:
 QMessageBox::warning(this, tr("Error"), tr("Failed to connect to host."));
 ui->connectButton->setEnabled(true);break; case QFtp::Login: QMessageBox::warning(this, tr("Error"), tr("Failed to login.")); ui->connectButton->setEnabled(true); break; case QFtp::List: QMessageBox::warning(this, tr("Error"), tr("Failed to get file list.\nClosing connection")); ftp.close(); break; } ui->statusLabel->setText(tr("Ready."));} 
 // React to the current command and issue
 // more commands or update the user interface
 else
 {
 switch(ftp.currentCommand())
 {
 case QFtp::ConnectToHost:
 ftp.login();break; case QFtp::Login: getFileList(); break; case QFtp::Close: ui->connectButton->setEnabled(true); // getFileList(); break; case QFtp::List: ui->disconnectButton->setEnabled(true); ui->upButton->setEnabled(true); ui->statusLabel->setText(tr("Ready.")); break; } }} void FtpDialog::getFileList() 
 {} keep in mind that QFftp has not been updated for a very long time and therefore may not automatically support your target FTp-Servers protocolls. I run into this, when one of my old projects worked fine with the old FTP-Server but failed completely with the new one. 
- 
You need an external library and I don't feel to recommend QFtp as it's not maintained anymore. libCURL is probably the standard library in the C/C++ world (and probably beyond). You can use a cpp wrapper like curlpp if you don't like the aftertaste C leaves in your mouth. This example (source) will download the list of files from ftp://ftp.funet.fi/ and save it in a file called ftp-list#include <stdio.h> #include <curl/curl.h> static size_t write_response(void *ptr, size_t size, size_t nmemb, void *data) { FILE *writehere = (FILE *)data; return fwrite(ptr, size, nmemb, writehere); } #define FTPBODY "ftp-list" #define FTPHEADERS "ftp-responses" int main(void) { CURL *curl; CURLcode res; FILE *ftpfile; FILE *respfile; /* local file name to store the file as */ ftpfile = fopen(FTPBODY, "wb"); /* b is binary, needed on win32 */ /* local file name to store the FTP server's response lines in */ respfile = fopen(FTPHEADERS, "wb"); /* b is binary, needed on win32 */ curl = curl_easy_init(); if(curl) { /* Get a file listing from sunet */ curl_easy_setopt(curl, CURLOPT_URL, "ftp://ftp.funet.fi/"); curl_easy_setopt(curl, CURLOPT_WRITEDATA, ftpfile); /* If you intend to use this on windows with a libcurl DLL, you must use CURLOPT_WRITEFUNCTION as well */ curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, write_response); curl_easy_setopt(curl, CURLOPT_HEADERDATA, respfile); res = curl_easy_perform(curl); /* Check for errors */ if(res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res)); /* always cleanup */ curl_easy_cleanup(curl); } fclose(ftpfile); /* close the local file */ fclose(respfile); /* close the response file */ return 0; }
- 
You're welcome ! Since you have it working now, please mark the thread as solved using the "Topic Tools" button so that other forum users may know a solution has been found :) 
- 
Do you mean the "Topic Tools" button ? There's one just under your original post or at the bottom of the page under the last post. 
 

