Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Users
  • Groups
  • Search
  • Get Qt Extensions
  • Unsolved
Collapse
Brand Logo
  1. Home
  2. Qt Development
  3. General and Desktop
  4. How can i get ftp files show on my list widget using QNetworkAccessManager Qt 5.8?

How can i get ftp files show on my list widget using QNetworkAccessManager Qt 5.8?

Scheduled Pinned Locked Moved Solved General and Desktop
41 Posts 7 Posters 14.0k Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • S Offline
    S Offline
    SGaist
    Lifetime Qt Champion
    wrote on 9 Feb 2017, 22:55 last edited by
    #17

    Which version of Qt are you using to build that module ?

    Interested in AI ? www.idiap.ch
    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

    1 Reply Last reply
    0
    • W Offline
      W Offline
      walter-j
      wrote on 9 Feb 2017, 22:59 last edited by
      #18

      Qt 5.7.1 . now i can build . what can i do else?

      Josephat Kabitshwa

      1 Reply Last reply
      0
      • W Offline
        W Offline
        walter-j
        wrote on 9 Feb 2017, 23:04 last edited by
        #19

        my programm does not recognize QFtp but i have already built it

        Josephat Kabitshwa

        1 Reply Last reply
        0
        • S Offline
          S Offline
          SGaist
          Lifetime Qt Champion
          wrote on 9 Feb 2017, 23:18 last edited by
          #20

          Did you install the module ?

          Interested in AI ? www.idiap.ch
          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

          V 1 Reply Last reply 24 Feb 2017, 03:09
          0
          • W Offline
            W Offline
            walter-j
            wrote on 9 Feb 2017, 23:18 last edited by
            #21

            yes i have installed the module

            Josephat Kabitshwa

            1 Reply Last reply
            0
            • S Offline
              S Offline
              SGaist
              Lifetime Qt Champion
              wrote on 9 Feb 2017, 23:37 last edited by SGaist 2 Sept 2017, 23:38
              #22

              Did you add QT += ftp to your .pro file and re-run qmake after that ?

              Interested in AI ? www.idiap.ch
              Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

              1 Reply Last reply
              0
              • W Offline
                W Offline
                walter-j
                wrote on 10 Feb 2017, 06:43 last edited by
                #23

                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_OBJECT

                public:
                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

                Josephat Kabitshwa

                J 1 Reply Last reply 10 Feb 2017, 07:41
                0
                • W Offline
                  W Offline
                  walter-j
                  wrote on 10 Feb 2017, 06:48 last edited by
                  #24

                  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()
                  {

                  }

                  Josephat Kabitshwa

                  J 1 Reply Last reply 10 Feb 2017, 07:47
                  0
                  • W walter-j
                    10 Feb 2017, 06:43

                    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_OBJECT

                    public:
                    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

                    J Offline
                    J Offline
                    jsulm
                    Lifetime Qt Champion
                    wrote on 10 Feb 2017, 07:41 last edited by
                    #25

                    @walter-j You should connect a slot to http://doc.qt.io/qt-4.8/qftp.html#stateChanged and see what happens

                    https://forum.qt.io/topic/113070/qt-code-of-conduct

                    1 Reply Last reply
                    1
                    • W Offline
                      W Offline
                      walter-j
                      wrote on 10 Feb 2017, 07:46 last edited by
                      #26

                      But in the book they used commandFinished(int, bool) signal.

                      Josephat Kabitshwa

                      J 1 Reply Last reply 10 Feb 2017, 08:19
                      0
                      • W walter-j
                        10 Feb 2017, 06:48

                        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()
                        {

                        }

                        J Offline
                        J Offline
                        J.Hilk
                        Moderators
                        wrote on 10 Feb 2017, 07:47 last edited by
                        #27

                        @walter-j

                        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.


                        Be aware of the Qt Code of Conduct, when posting : https://forum.qt.io/topic/113070/qt-code-of-conduct


                        Q: What's that?
                        A: It's blue light.
                        Q: What does it do?
                        A: It turns blue.

                        1 Reply Last reply
                        0
                        • W walter-j
                          10 Feb 2017, 07:46

                          But in the book they used commandFinished(int, bool) signal.

                          J Offline
                          J Offline
                          jsulm
                          Lifetime Qt Champion
                          wrote on 10 Feb 2017, 08:19 last edited by
                          #28

                          @walter-j I did not say you should not use commandFinished, just add another slot to see whether you get any state changes.

                          https://forum.qt.io/topic/113070/qt-code-of-conduct

                          1 Reply Last reply
                          0
                          • V Offline
                            V Offline
                            VRonin
                            wrote on 10 Feb 2017, 09:18 last edited by
                            #29

                            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;
                            }
                            

                            "La mort n'est rien, mais vivre vaincu et sans gloire, c'est mourir tous les jours"
                            ~Napoleon Bonaparte

                            On a crusade to banish setIndexWidget() from the holy land of Qt

                            1 Reply Last reply
                            3
                            • W Offline
                              W Offline
                              walter-j
                              wrote on 11 Feb 2017, 13:10 last edited by
                              #30

                              stateChanged solved the problem.

                              Thank you guys

                              JK

                              Josephat Kabitshwa

                              1 Reply Last reply
                              0
                              • S Offline
                                S Offline
                                SGaist
                                Lifetime Qt Champion
                                wrote on 11 Feb 2017, 20:03 last edited by
                                #31

                                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 :)

                                Interested in AI ? www.idiap.ch
                                Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                1 Reply Last reply
                                0
                                • W Offline
                                  W Offline
                                  walter-j
                                  wrote on 12 Feb 2017, 21:28 last edited by
                                  #32

                                  i have searched for it . i didn't find

                                  Josephat Kabitshwa

                                  1 Reply Last reply
                                  0
                                  • S Offline
                                    S Offline
                                    SGaist
                                    Lifetime Qt Champion
                                    wrote on 12 Feb 2017, 21:38 last edited by
                                    #33

                                    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.

                                    Interested in AI ? www.idiap.ch
                                    Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                    1 Reply Last reply
                                    0
                                    • W Offline
                                      W Offline
                                      walter-j
                                      wrote on 13 Feb 2017, 19:24 last edited by
                                      #34

                                      how can i clone QHttp? can i have the link for the repository?

                                      Josephat Kabitshwa

                                      1 Reply Last reply
                                      0
                                      • W Offline
                                        W Offline
                                        walter-j
                                        wrote on 13 Feb 2017, 19:48 last edited by
                                        #35

                                        when compiling QHttp i got this error : /home/walter-j/Documents/5.8/gcc_64/mkspecs/features/qt_module_headers.prf:153: error: Cannot write file /include/QtHttp/QtHttpDepends: Cannot create parent directory

                                        can someone help me?

                                        Josephat Kabitshwa

                                        1 Reply Last reply
                                        0
                                        • S Offline
                                          S Offline
                                          SGaist
                                          Lifetime Qt Champion
                                          wrote on 13 Feb 2017, 20:39 last edited by
                                          #36

                                          Where did you download it from ?

                                          Interested in AI ? www.idiap.ch
                                          Please read the Qt Code of Conduct - https://forum.qt.io/topic/113070/qt-code-of-conduct

                                          1 Reply Last reply
                                          0

                                          26/41

                                          10 Feb 2017, 07:46

                                          • Login

                                          • Login or register to search.
                                          26 out of 41
                                          • First post
                                            26/41
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • Users
                                          • Groups
                                          • Search
                                          • Get Qt Extensions
                                          • Unsolved