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?
Forum Updated to NodeBB v4.3 + New Features

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 16.4k Views 1 Watching
  • 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.
  • W Offline
    W Offline
    walter-j
    wrote on 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 last edited by
      #19

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

      Josephat Kabitshwa

      1 Reply Last reply
      0
      • SGaistS Offline
        SGaistS Offline
        SGaist
        Lifetime Qt Champion
        wrote on 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
        0
        • W Offline
          W Offline
          walter-j
          wrote on last edited by
          #21

          yes i have installed the module

          Josephat Kabitshwa

          1 Reply Last reply
          0
          • SGaistS Offline
            SGaistS Offline
            SGaist
            Lifetime Qt Champion
            wrote on last edited by SGaist
            #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 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

              jsulmJ 1 Reply Last reply
              0
              • W Offline
                W Offline
                walter-j
                wrote on 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.HilkJ 1 Reply Last reply
                0
                • W walter-j

                  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

                  jsulmJ Offline
                  jsulmJ Offline
                  jsulm
                  Lifetime Qt Champion
                  wrote on 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 last edited by
                    #26

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

                    Josephat Kabitshwa

                    jsulmJ 1 Reply Last reply
                    0
                    • W walter-j

                      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.HilkJ Offline
                      J.HilkJ Offline
                      J.Hilk
                      Moderators
                      wrote on 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

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

                        jsulmJ Offline
                        jsulmJ Offline
                        jsulm
                        Lifetime Qt Champion
                        wrote on 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
                        • VRoninV Offline
                          VRoninV Offline
                          VRonin
                          wrote on 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 last edited by
                            #30

                            stateChanged solved the problem.

                            Thank you guys

                            JK

                            Josephat Kabitshwa

                            1 Reply Last reply
                            0
                            • SGaistS Offline
                              SGaistS Offline
                              SGaist
                              Lifetime Qt Champion
                              wrote on 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 last edited by
                                #32

                                i have searched for it . i didn't find

                                Josephat Kabitshwa

                                1 Reply Last reply
                                0
                                • SGaistS Offline
                                  SGaistS Offline
                                  SGaist
                                  Lifetime Qt Champion
                                  wrote on 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 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 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
                                      • SGaistS Offline
                                        SGaistS Offline
                                        SGaist
                                        Lifetime Qt Champion
                                        wrote on 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
                                        • W Offline
                                          W Offline
                                          walter-j
                                          wrote on last edited by
                                          #37

                                          here : https://github.com/qt/qthttp

                                          Josephat Kabitshwa

                                          1 Reply Last reply
                                          0

                                          • Login

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