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 :

[QCompleter] Comment réaliser une complétion du style Visual Studio


Sujet :

Qt

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    dev
    Inscrit en
    Avril 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Avril 2010
    Messages : 53
    Par défaut [QCompleter] Comment réaliser une complétion du style Visual Studio
    Hello,

    J'aimerais réaliser une complétion dans le même style que Visual Studio, c'est à dire avec la possibilité de resizer le popup.

    Le popup implémenté par défaut par un QCompleter est frameless, donc non resizable. J'ai essayé de changer son style de la manière suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _completer->popup()->setWindowFlags(Qt::Window | Qt::CustomizeWindowHint);
    J'ai bien le style voulu mais je perd le comportement "popup", c'est à dire quand je clique sur un autre widget, le popup reste affiché.

    J'ai bien essayer de le cacher en appelant la méthode hide() sur la méthode focusOutEvent() du combo box dont je cherche à réaliser la complétion:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    void QtComboBox::focusOutEvent(QFocusEvent* e)
    {
      if (_completer)
        _completer->popup()->hide();
      QComboBox::focusInEvent(e);
    }
    Mais mon QtCommandBox garde toujours le focus quand je clique sur d'autres widget

    De plus, le popup est se retrouve dans la barre des tâches à côté de celle de mon appli (ce qui est bien mais pas top)

    En testant le type Qt::Tool,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    completer->popup()->setWindowFlags(Qt::Tool | Qt::CustomizeWindowHint);
    j'ai presque le bon comportement (user resizable) mais je n'arrive plus à naviguer dans les items avec les touches up & down du clavier.


    Quelqu'un aurait une solution, j'ai l'impression d'avoir à peu près tout essayer...
    Mais peut-etre que ce n'est pas faisable en Qt.

  2. #2
    Membre averti
    Profil pro
    dev
    Inscrit en
    Avril 2010
    Messages
    53
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : dev

    Informations forums :
    Inscription : Avril 2010
    Messages : 53
    Par défaut
    De plus, le comportement popup fait qu'il disparait sur l'événement whelEvent(). Je ne peux donc pas naviguer dans mes items avec la molette même si je redéfinis l'événement au niveau de mon composant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void QtCommandBox::wheelEvent(QWheelEvent * e)
    {
      e->ignore();
    }
    Je ne comprend vraiment pas comment je peux implémenter une solution correct dans ces conditions

Discussions similaires

  1. Réponses: 1
    Dernier message: 25/09/2011, 01h09
  2. Réponses: 12
    Dernier message: 23/01/2008, 09h17
  3. Réponses: 5
    Dernier message: 22/07/2005, 23h40
  4. comment établir une liaison usb sous visual c++ ?
    Par Baby_Chou dans le forum MFC
    Réponses: 2
    Dernier message: 03/02/2005, 08h31
  5. [FLASH MX] Comment réaliser une forme dentelée
    Par celina5880 dans le forum Flash
    Réponses: 4
    Dernier message: 04/11/2004, 17h48

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