есть вопрос по Qt

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by sn0w, 27 Nov 2011.

  1. sn0w

    sn0w Статус пользователя:

    Joined:
    26 Jul 2005
    Messages:
    1,021
    Likes Received:
    1,200
    Reputations:
    327
    начал кодить на кьюте, решил начать с брутфорса =) вопрос в QNetworkAccessManager и событиях, тк использовать эвенты не хотел, то засунул сигналы от нетворк реплаев в эвентлуп.

    собсна кодэ:
    Code:
    bool MainWindow::Logon() // TODO: add login & pass in param list
    {
        QEventLoop              loop(0);
        QNetworkReply           *replyLogon, *replyAuth;
        QNetworkRequest         request;
    
        bool                    rc = false;
    
        request.setUrl(QUrl("https://auth.site.ru"));
        request.setRawHeader("User-Agent", "qLK 1.0");
    
        // clear the previous cookies - IS THIS LEGAL?!
        //
        //QNetworkCookieJar *pqjar = manager.cookieJar();
        //if(pqjar) delete pqjar;
        //manager.setCookieJar(new QNetworkCookieJar());
    
    
        //
        // logon and get the cookies
        //
        replyLogon = manager.get(request);
        connect(replyLogon, SIGNAL(finished()), &loop, SLOT(quit()));
        loop.exec();
        replyLogon->disconnect(&loop, 0);
    
        if(replyLogon->bytesAvailable() == 0)
        {
            replyLogon->deleteLater();
            return rc;
        }
    
        //
        // now try to log in
        //
        request.setRawHeader("Content-Length", "36");
    
        replyAuth = manager.post(request, "login=1111111111&password=2222222222");
        connect(replyAuth, SIGNAL(finished()), &loop, SLOT(quit()));
        loop.exec();
        replyAuth->disconnect(&loop, 0);
    
        //
        // if the 'Location' header appears, assume we're
        // logged on successfully.
        //
        if(replyAuth->hasRawHeader("Location"))
            rc = true;
    
        replyLogon->deleteLater();
        replyAuth->deleteLater();
    
        return rc;
    }
    вопрос вообщем заключен в комменте // clear the previous cookies - IS THIS LEGAL?! - потому что ничего иного в голову не пришло.

    и еще: Logon вызывается в обработчике пуш_буттона, так вот вопрос, когда исполнится deleteLater для реплаев в этом случае, и в случае если код будет вынесен и зациклен в отдельном потоке? может чтонибудь вроде радстудийного Application->ProcessMessages нужно?