IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Qt Discussion :

Evenement resize un poil bloquant


Sujet :

Qt

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 67
    Points : 63
    Points
    63
    Par défaut Evenement resize un poil bloquant
    Bonjour tout le monde,

    Voilà, j'ai une application dont le contenu du widget central met plusieurs secondes à se calculer...

    Donc il y a un thread de calcul qui prévient par signal/slot quand c'est fait, et qui prévient même quand il a un aperçu du résultat (très vite : environ 10ms)... Le résultat, transmis par le signal est de type QImage&

    Ca marche nickel sauf... quand je resize ma fenêtre... Tant que je ne relâche pas ma souris, aucun évènement venant de mon thread n'est reçu, aucun paintEvent non plus... Quand je relâche le bouton de la souris, je reçois brutalement tout les signaux émis par le thread de calcul... Tout ça est vérifié et validé avec des qWarnings...

    Bref, l'évènement resize semble avoir un traitement prioritaire.

    Vous pouvez constater le même problème sur l'exemple mandelbrot.
    http://qt.developpez.com/doc/4.2/threads-mandelbrot/

    Quelqu'un sait-il comment je peux forcer la réception de mes signaux et obliger mon widget central à se repeindre avant d'avoir relaché le bouton de ma souris? ou au moins comment gérer l'évènement resize de manière moins prioritaire?

    Merci.

  2. #2
    Membre averti
    Avatar de Niak74
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    271
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 271
    Points : 333
    Points
    333
    Par défaut
    Il te faudrait un flag qui passe à true quand tu cliques sur la bordure de ta fenêtre (celle qui permet le resize), et à false si tu relâche la souris.

    Ensuite, plus qu'à surcharger mouseMoveEvent(QMouseEvent * e) en demandant le resize si ton flag vaut true.

    Tu peux peut-être t'aider de ce topic pour la détection du clic sur la bordure.
    Un clavier Azerty en vaut deux.

  3. #3
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Est-ce que la fonction resizeEvent() de ta fenêtre est appelée tant que tu ne relâches pas le bouton de la souris?
    Je soupçonne que non d'après ta description, et ce serait peut-être à cause du système de fenêtrage qui bloque le thread GUI pendant le resize, et non le gestionnaire d'évènements de Qt qui ferait passer les evènements resize en priorité.
    C'est sur quel système et window manager?

Discussions similaires

  1. Resize d'une image
    Par Anonymous dans le forum C
    Réponses: 6
    Dernier message: 13/07/2008, 22h23
  2. [VB6] Evenement validate
    Par grosjej dans le forum VB 6 et antérieur
    Réponses: 4
    Dernier message: 05/09/2002, 15h46
  3. Evenement Change
    Par PierDIDI dans le forum Composants VCL
    Réponses: 3
    Dernier message: 28/08/2002, 10h08
  4. develloppement avec ORBit: service d'evenement
    Par belmontv dans le forum CORBA
    Réponses: 3
    Dernier message: 06/06/2002, 22h56
  5. Generation d'evenements a une date precise
    Par pascalzzz dans le forum MFC
    Réponses: 2
    Dernier message: 04/06/2002, 15h21

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo