[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:
_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:
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:
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... :cry:
Mais peut-etre que ce n'est pas faisable en Qt.