Tom's Guide > Forum > Programmation > C++ gestion ftp avec Qt.
Mot :    Pseudo :           
 

Bonjour a tous,

Voila j'essaye de recupéré l'arborescence de mon ftp via une application C++ realisé avec Qt.
J'ai commencé mon code mais j'ai un probléme de signal que je ne parvient pas resoudre.
Voici mon code (juste la partie interessente) :

Code :
  1. fileList = new QTreeWidget;  //Je fais mon QTreeWidget
  2. fileList->setEnabled(false);
  3. fileList->setRootIsDecorated(false);
  4. fileList->setHeaderLabels(QStringList() << tr("Name" ) << tr("Size" ) << tr("Owner" ) << tr("Group" ) << tr("Time" ));
  5. fileList->header()->setStretchLastSection(false);
  6. QWidget *widget = new QWidget;
  7. QGridLayout layout_1 = new QGridLayout;
  8. layout_1->addWidget(fileList, 3, 0);      //Je place mon QTreeWidget dans ma fenêtre via un layout
  9. widget->setLayout(layout_1);
  10. connect(ftp, SIGNAL(commandFinished(int, bool)), this, SLOT(commandefini(int, bool)));
  11. connect(ftp, SIGNAL(listInfo(QUrlInfo)), this, SLOT(arbo(QUrlInfo)));  //connexion des signaux avec les slots...
  12. connect(connexion,SIGNAL(clicked()),qApp,SLOT(connect1()));
  13. void fenetre::connect1()
  14. {
  15. ftp->connectToHost(ftptext->text(), portnum->value());
  16. ftp->login(utilisateurtext->text(), mdptext->text());
  17. }
  18. void fenetre::commandefini(int i, bool i2)
  19. {
  20.         if (ftp->currentCommand() == 3)  //Une fois que connectToHost se termine, je lance ftp->list();
  21.         {
  22.             if (i2)
  23.             {
  24.                 ftp->close();
  25.             }
  26.             else
  27.             {
  28.             int id = ftp->list();
  29.             qDebug()<< id << ftp->state();
  30.             }
  31.         }
  32.         if (ftp->currentCommand() == 4)
  33.         {
  34.         }
  35. }
  36. void fenetre::arbo(const QUrlInfo &arbo1)
  37. {
  38.     qDebug()<<"arbo : "<< arbo1.name();
  39.     QTreeWidgetItem *item = new QTreeWidgetItem;
  40.     item->setText(0, arbo1.name());
  41.     item->setText(1, QString::number(arbo1.size()));
  42.     item->setText(2, arbo1.owner());
  43.     item->setText(3, arbo1.group());
  44.     item->setText(4, arbo1.lastModified().toString("MMM dd yyyy" ));
  45.     isDirectory[arbo1.name()] = arbo1.isDir();
  46.     fileList->addTopLevelItem(item);
  47.     if (!fileList->currentItem())
  48.     {
  49.         fileList->setCurrentItem(fileList->topLevelItem(0));
  50.         fileList->setEnabled(true);
  51.     }
  52. }




Mais j'obtient ceci apres comme valeur a la ligne : qDebug()<< id << ftp->state();

Starting C:/jéjé/jeje/projet/Net Developpe/release/Net Developpe.exe...
3 3

Mon slot arbo n'est donc pas appelé...

id vaut 3 or il devrait valoir 6, valeur de ftp->list(); et non 3 la valeur de ftp->connectToHost();
Cela a donc pour effet de ne pas lancé mon slot arbo...

Cordialement,

Liens sponsorisés
Inscrivez-vous ou connectez-vous pour masquer ceci.

Dans la doc, il est écrit que list est asynchrone, c'est-à-dire que lorsque tu retournes de list, la commande n'est pas encore exécutée. Donc, ça me parait normal que tu n'ais pas 6 à la sortie de la méthode list().
Tu devrais mettre des slot sur CommandStarted et CommandFinished, pour voir si les commandes sont déclenchée et terminée (pas seulement pour list)

------------------------------ 6800A007B81300CD10B00131C989CF26880541
81F900FA750230EDBADA03ECA80875FBECA808
74FBE4603C0175DFB80300CD10B8004CCD21
Répondre à CRicky
Tom's Guide > Forum > Programmation > C++ gestion ftp avec Qt.
Aller à :

Il y a 634 utilisateurs connus et inconnus. Pour voir la liste des connectés connus, cliquez ici.

Liens