Russian Qt Forum

Qt => Работа с сетью => Тема начата: B_u_R_n от Апрель 19, 2010, 17:55



Название: QFtp сигнал done
Отправлено: B_u_R_n от Апрель 19, 2010, 17:55
Проблема такова, вот кусок кода:
    ftp = new QFtp(this);
    ftp1= new QFtp(this);
    connect(ftp, SIGNAL(commandFinished(int,bool)),this, SLOT(ftpCommandFinished(int,bool)));
    connect(ftp, SIGNAL(listInfo(QUrlInfo)),this, SLOT(addToList(QUrlInfo)));
    connect(ftp, SIGNAL(dataTransferProgress(qint64,qint64)),this, SLOT(updateDataTransferProgress(qint64,qint64)));
    connect(ftp1, SIGNAL(dataTransferProgress(qint64,qint64)),this, SLOT(updateDataTransferProgress(qint64,qint64)));
    connect(ftp1, SIGNAL(done(bool)), this, SLOT(ftpDone(bool)));
    connect(ftp1, SIGNAL(listInfo(QUrlInfo)),this, SLOT(ftpListInfo(const QUrlInfo &)));
Стоят обработчики в обработчике на кнопку конект по фтп, после идет конект только на 1 фтп, а именно
fileList->clear();
    currentPath.clear();
    isDirectory.clear();
    QUrl url(ftpServerLineEdit->text());
    if (!url.isValid() || url.scheme().toLower() != QLatin1String("ftp"))
    {
        ftp->connectToHost(ftpServerLineEdit->text(), 21);
        ftp->login();

    }
    else
    {
        ftp->connectToHost(url.host(), url.port(21));

        if (!url.userName().isEmpty())
            ftp->login(QUrl::fromPercentEncoding(url.userName().toLatin1()), url.password());
        else
            ftp->login();
        if (!url.path().isEmpty())
            ftp->cd(url.path());
        ftp1->connectToHost(url.host(), url.port(21));

        /*if (!url.userName().isEmpty())
            ftp1->login(QUrl::fromPercentEncoding(url.userName().toLatin1()), url.password());
        else
            ftp1->login();
        if (!url.path().isEmpty())
            ftp1->cd(url.path());*/
    }

    fileList->setEnabled(true);
    connectButton->setEnabled(false);
    connectButton->setText(tr("Disconnect"));
    statusLabel->setText(tr("Connecting to FTP server %1...").arg(ftpServerLineEdit->text()));
Почему-то мой обработчик ftpDone()
    connect(ftp1, SIGNAL(done(bool)), this, SLOT(ftpDone(bool)));
срабатывает, хотя конект на ftp1 я делаю только в обработчике на другую кнопку
Поясните пожалуйста


Название: Re: QFtp сигнал done
Отправлено: Amigo_sa от Апрель 19, 2010, 19:06
    isDirectory.clear();
    QUrl url(ftpServerLineEdit->text());
    if (!url.isValid() || url.scheme().toLower() != QLatin1String("ftp"))
    {
        ftp->connectToHost(ftpServerLineEdit->text(), 21);
        ftp->login();

    }
    else
    {
        ftp->connectToHost(url.host(), url.port(21));

        if (!url.userName().isEmpty())
            ftp->login(QUrl::fromPercentEncoding(url.userName().toLatin1()), url.password());
        else
            ftp->login();
        if (!url.path().isEmpty())
            ftp->cd(url.path());
        ftp1->connectToHost(url.host(), url.port(21));

Почему-то мой обработчик ftpDone()
    connect(ftp1, SIGNAL(done(bool)), this, SLOT(ftpDone(bool)));
срабатывает, хотя конект на ftp1 я делаю только в обработчике на другую кнопку
Поясните пожалуйста
а разве тут нет коннекта на фтп1?
Плиз, не перегружайте код закомментаренными кусками, оч неудобно


Название: Re: QFtp сигнал done
Отправлено: B_u_R_n от Апрель 20, 2010, 05:52
Млин, и правда, спасибо огромное