0

私のプログラムはQtNetworkを使用してインターネットからコンテンツをダウンロードします。

int main()で私は呼び出します

int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QmlApplicationViewer viewer;

    QNetworkConfigurationManager manager;
    QNetworkConfiguration cfg = manager.defaultConfiguration();
    QNetworkSession* session = new QNetworkSession(cfg);
    session->setSessionProperty("ConnectInBackground", true);
    session->open();

    /*some registering types*/

    viewer.setOrientation(QmlApplicationViewer::ScreenOrientationAuto);
    viewer.setMainQmlFile(QLatin1String("qml/maelyrica/main.qml"));
    viewer.showFullScreen();

    return app.exec();
}

次に、1つのメンバー関数、多くのカプセル化、他のメンバー関数を呼び出す他のメンバー関数の呼び出しでは、次のようなコードが使用されます。

QNetworkReply::NetworkError lyricsDownloader::download(const QString& a, const QString& t)
{
QNetworkAccessManager nam;
QNetworkReply * reply;
QUrl url = toProviderCode(a, t);
forever
{
    reply = nam.get(QNetworkRequest(url));
    QEventLoop downloadLoop;
    connect(reply, SIGNAL(finished()), &downloadLoop, SLOT(quit()));
    downloadLoop.exec();
    url = reply->attribute(QNetworkRequest::RedirectionTargetAttribute).toUrl();
    if (url.isEmpty()) break; // break when no redirect, when redirect do it again with new url
}

lyrics_qstr = reply->readAll();

//qDebug() << lyrics_qstr;

return reply->error();
}

これにより、NokiaN9やNokiaN900などのモバイルデバイスでインターネットポップアップが表示されます。つまり、ユーザーは、すでに接続していない限り、インターネット接続を選択する必要があります。ただし、表示されていません。

私は何が間違っているのですか?

前もって感謝します

4

1 に答える 1

1

「ConnectInBackground」をtrueに設定しました。

「open()を呼び出す前にこのプロパティをtrueに設定すると、接続が試行されますが、接続を確立できない場合、ユーザーは相談されず、適切な接続を選択するように求められます。このプロパティはデフォルトでは設定されておらず、サポートされています。プラットフォームによって異なります。」

于 2012-09-17T12:55:57.920 に答える