en attente d'un signal
Je suis en train de travailler sur une application qui charge le contenu du fichier vers le serveur.
Pour télécharger le fichier sur le serveur, je suis en utilisant ‘QNetworkAccessManager’ classe. Depuis, il travaille comme asynchrone, je l'ai changé de travail synchrone en utilisant QEventLoop.
Class FileTransfer
{
Public :
QNetworkAccessManager mNetworkManager;
Void Upload(QNetworkRequest request, QIODevice *data)
{
responce = mNetworkManager.put(request, data);
EventLoop.exec();
ReadResponce(responce);
}
Void Stop()
{
responce ->close();
}
}
Dans mon exemple d'application, j'ai 2 windows. 1er pour sélectionner les fichiers et la 2ème pour montrer le progrès.
Lorsque l'utilisateur clic sur le bouton télécharger dans la première fenêtre, la 2ème fenêtre s'affiche et puis j'ai créer le FileTransfer objet et démarrer le téléchargement.
En téléchargeant le fichier si l'utilisateur ferme le formulaire puis dans le destructeur de la fenêtre j'appelle à l'arrêt de l' ‘FileTransfer "après que j'ai supprimer le" FileTransfer’ objet.
Mais ici, le Upload() fonction n'est pas encore terminé, donc il va se planter.
S'il vous plaît aidez-moi à:
Comment attendre dans " stop () fonction jusqu'à ce que l'Upload() la fonction est terminée
OriginalL'auteur Umesha MS | 2010-06-16
Vous devez vous connecter pour publier un commentaire.
De ce que je peux voir à partir de votre code, vous êtes à l'exécution d'une QEventLoop mais vous n'êtes pas en train de connecter sa "quitter" logement pour tous les signaux. Prendre le ci-dessous à titre d'exemple, la connexion est un QHttp - et le code est pris à partir de quelque chose de différent, mais le principe s'applique.
Il pourrait être appliqué à votre code, si je ne me trompe pas, c'est comme ça...
Excuses si je me suis trompé à votre requête! Je suis le seul à se familiariser avec qt à nouveau après une rupture, mais je crois que c'est ce que tu veux dire! Bonne chance!
OriginalL'auteur EnOpenUK
Je pense que vous avez besoin d'ajouter quelque chose comme ça dans votre fonction de téléchargement:
Voici le texte intégral du code: datacod-qt-outils
Espère que ça aide.
OriginalL'auteur mosg
Personnellement, je vous recommande de ne pas utiliser l'une de ces réponses.
Il suffirait de se connecter à un compte à rebours de verrouillage pour le signal.
De sorte que vous pourriez écrire:
Pour cela, vous auriez besoin d'un wrapper:
OriginalL'auteur abergmeier