Название: qftp клиент
Отправлено: koldun90 от Ноябрь 12, 2015, 13:27
набросал проект на скорую руку но почему то сигналы и слоты не обрабатываются решил начать как бы пробы c qftp создал небольшой проект но сигналы не ловятся консольное приложение main.cppC++ (Qt) #include <QCoreApplication> #include <myftp.h> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); myftp ftp; return a.exec(); }
myftp.h C++ (Qt) #ifndef MYFTP_H #define MYFTP_H #include <QObject> #include <QFtp> #include <QUrlInfo> #include <iostream> class myftp : public QObject { Q_OBJECT public: explicit myftp(QObject *parent = 0); QFtp a; signals: public slots: void con(); void poluchob(QUrlInfo); //ÐÏÌÕÞÅÎÉÅ ÆÁÊÌÁ ÉÌÉÐÁÐËÉ ÎÁÈÏÄÑÝÉÓÑ × ÚÁÄÁÎÎÏÊ ÄÉÒÅËÔÏÒÉÉ void poluchif(int); void kk(int,bool); }; #endif // MYFTP_H myftp.cppC++ (Qt) #include "myftp.h" myftp::myftp(QObject *parent) : QObject(parent) { //ËÏÎÓÔÒÕËÔÏÒ con(); } //ËÏÎÎÅËÔ Ë ÓÅÒ×ÅÒÕ void myftp::con() { QFtp ftp; connect(&ftp,SIGNAL(stateChanged(int)),this,SLOT(poluchif(int))); connect(&ftp,SIGNAL(commandStarted(int)),this,SLOT(poluchif(int))); connect(&ftp,SIGNAL(commandFinished(int,bool)),this,SLOT(kk(int,bool))); connect(&ftp,SIGNAL(listInfo(QUrlInfo)),this,SLOT(poluchob(QUrlInfo))); ftp.connectToHost(QString("10.4.13.65"),21); ftp.login(QString("root"),QString("12345678")); ftp.cd("manag"); ftp.list(); } void myftp::poluchob(QUrlInfo url) { std::cout<<QString(url.name()).toStdString()<<std::endl; } void myftp::poluchif(int r) { std::cout<<QString(r).toStdString()<<std::endl; } void myftp::kk(int a,bool ok) { //std::cout<<QString(url.name()).toStdString()<<std::endl; }
проблема в том что не испускается ни один сигнал(не выполняется ни один слот) в чем может быть проблема.... делаю в линуксе... может быть я не правильно использую сигнально слотовую систему в консольном приложении?? в чем может быть проблема?
Название: Re: qftp клиент
Отправлено: Old от Ноябрь 12, 2015, 13:35
Вы объявили член класса a, а конекты делаете с локальным объектом ftp.
Название: Re: qftp клиент
Отправлено: koldun90 от Ноябрь 12, 2015, 13:38
подскажите как исправить а тоя совсем не догоняю.... я объявил объект класса... C++ (Qt) myftp ftp;
выполнился конструктор C++ (Qt) myftp::myftp(QObject *parent) : QObject(parent) { con(); }
далее выполнился метод C++ (Qt) void myftp::con() { QFtp ftp; connect(&ftp,SIGNAL(stateChanged(int)),this,SLOT(poluchif(int))); connect(&ftp,SIGNAL(commandStarted(int)),this,SLOT(poluchif(int))); connect(&ftp,SIGNAL(commandFinished(int,bool)),this,SLOT(kk(int,bool))); connect(&ftp,SIGNAL(listInfo(QUrlInfo)),this,SLOT(poluchob(QUrlInfo))); ftp.connectToHost(QString("10.4.13.65"),21); ftp.login(QString("root"),QString("12345678")); ftp.cd("manag"); ftp.list(); }
в нем создался объект qftp и к нему я пишу сигналы слоты что я делаю не так??
Название: Re: qftp клиент
Отправлено: Old от Ноябрь 12, 2015, 13:39
подскажите как исправить а тоя совсем не догоняю....
Все действия выполнять с членом класса a.
Название: Re: qftp клиент
Отправлено: koldun90 от Ноябрь 12, 2015, 13:53
я понял коннекты можно прописывать только к объектам которые объявлены в классе который я вызываю из main.cpp? и поскольку QFtp a является членом класса myftp я и могу делать коннект.... я правильно рассуждаю?
Название: Re: qftp клиент
Отправлено: Old от Ноябрь 12, 2015, 13:55
я понял коннекты можно прописывать только к объектам которые объявлены в классе который я вызываю из main.cpp? и поскольку QFtp a является членом класса myftp я и могу делать коннект.... я правильно рассуждаю?
Можно конектится и к локальным объектам, только они разрушаются при выходе из функции и конекты разрываются.
Название: Re: qftp клиент
Отправлено: koldun90 от Ноябрь 13, 2015, 10:55
появилась проблема не скачивает файл с помощью QFtp::get не пойму в чем проблема... файл создается но в него ничего не пишется вот код main.cppC++ (Qt) #include <QCoreApplication> #include <myftp.h> int main(int argc, char *argv[]) { QCoreApplication a(argc, argv); myftp ftp; ftp.connectserver(); //конекчусь к серверу ftp.poluc(QString("")); // return a.exec(); } myftp.hC++ (Qt) #ifndef MYFTP_H #define MYFTP_H #include <QObject> #include <QFtp> #include <QUrlInfo> #include <iostream> #include <QFileInfo> #include <QDir> class myftp : public QObject { Q_OBJECT public: explicit myftp(QObject *parent = 0); QFtp a; QString ipadreess; QString port; QString login; QString parol; QString papka; signals: public slots: void connectserver(); // ÐÏÄËÌÀÞÅÎÉÅ Ë ÓÅÒ×ÅÒÕ void poluc(QString); void setip(QString); void loginparol(QString,QString); void poluchob(QUrlInfo); //ÐÏÌÕÞÅÎÉÅ ÆÁÊÌÁ ÉÌÉÐÁÐËÉ ÎÁÈÏÄÑÝÉÓÑ × ÚÁÄÁÎÎÏÊ ÄÉÒÅËÔÏÒÉÉ void poluchif(int); void ustanpapka(QString); void kk(int,bool); }; #endif // MYFTP_H myftp.cppC++ (Qt) #include "myftp.h" myftp::myftp(QObject *parent) : QObject(parent) { connect(&a,SIGNAL(listInfo(QUrlInfo)),this,SLOT(poluchob(QUrlInfo))); } //ÐÏÄËÌÀÞÅÎÉÅ Ë ÓÅÒ×ÅÒÕ ÐÅÒÅÄÁÅÍ //ÉÐ ÁÄÒÅÓ É ÐÏÒÔ //ÌÏÇÉÎ É ÐÁÒÏÌØ void myftp::connectserver() { std::cout<<"ÚÁÛÅÌ × ËÏÎÎÅËÔ="<<std::endl; a.connectToHost(QString("10.4.13.65")); a.login(QString("root"),QString("12345678")); } void myftp::poluc(QString ppka) { std::cout<<"ÚÁÛÅÌ × ÐÏÌÕÞ="<<std::endl; a.cd(QString("ttt")); //ÐÅÒÅÈÏÄÉÍ × ÐÁÐËÕ ËÏÔÏÒÕÀ ÎÕÖÎÏ ÓËÏÐÉÒÏ×ÁÔØ a.list(); //ÐÏÌÕÞÁÅÍ ÓÐÉÓÏË ÏÂßÅËÔÏ×(ÆÁÊÌÏ× É ÐÁÐÏË) ÎÁÈÏÄÑÝÉÈÓÑ × ÄÁÎÎÏÊ ÐÁÐËÅ // std::cout<<ppka.toStdString()<<std::endl; } //ÐÏÌÕÞÁÅÍ ÉÍÑ ËÁÖÄÏÇÏ ÆÁÊÌÁ × ÐÁÐËÅ void myftp::poluchob(QUrlInfo url) { QString fail=url.name(); std::cout<<"æÁÊÌ × ËÏÔÏÒÙÊ ÓËÁÞÉ×ÁÅÍ="<<QString(url.name()).toStdString()<<std::endl; QString outfail="/papkatest/"+url.name(); std::cout<<"æÁÊÌ ÐÒÉÅÍÎÉË="+outfail.toStdString()<<std::endl; QFile g(outfail); if (g.open(QIODevice::WriteOnly)) // ÏÔËÒÙ×ÁÅÍ ÆÁÊÌ ÄÌÑÚÁÐÉÓÉÎÁ ÓÔÏÒÏÎÅ ËÌÉÅÎÔÁ { // std::cout<<"òÅÚÕÌØÔÁÔ="<<rez<<std::endl; // a.state(); std::cout<<"óÏÓÔÏÑÎÉÅ="<<a.state()<<std::endl; int rez=a.get(fail,&g,QFtp::Binary); std::cout<<"òÅÚÕÌØÔÁÔ="<<rez<<std::endl; } //a.close(); g.close(); } void myftp::poluchif(int r) { std::cout<<QString(r).toStdString()<<std::endl; } void myftp::kk(int a,bool ok) { } void myftp::setip(QString ip) { ipadreess=ip; } //ÕÓÔÁÎÁ×ÌÉ×ÁÅÍ ÉÐ ÁÄÒÅÓ É ÐÁÒÏÌØ void myftp::loginparol(QString log,QString par) { login=log; parol=par; } //ÕÓÔÁÎÁ×ÌÉ×ÁÅÍ ÐÁÐËÕ × ËÏÔÏÒÕÀ ÍÙ ÓËÏÐÉÒÕÅÍ ÆÁÊÌÙ void myftp::ustanpapka(QString p) { papka=p; }
не пойму в чем дело...
|