Bonjour,
je rencontre actuellement un petit problème avec un QLineEdit personnalisé.
Lorsque je clic dessus, celui-ci est censé sélectionner l'intérieur de la zone de saisie si celle-ci ne l'est pas déjà, quelque chose de simple en fait.
Seulement, en ré-implémentant MousePressEvent dans ma QLineEdit, j'ai quelque petit soucis pour sélectionner le champ. Voici le bout de code concerné :
Bizarrement, lorsque je lance le programme, j'obtiens en sortie deux "0", autrement dit, même après le "this->SelectAll()", le texte n'est pas sélectionné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 void TNumberArea::mousePressEvent(QMouseEvent *mouseEvent) { QLineEdit::mousePressEvent(mouseEvent); cout << this->hasSelectedText() << endl; if (!this->hasSelectedText()) this->selectAll(); cout << this->hasSelectedText() << endl; }
J'ai effectué quelques recherches et j'ai trouvé ceci :
Si c'est la bonne solution, je ne comprends pas non plus pourquoi ^^.The solution is to have a single-shot timer in the focusinEvent that calls a function that just calls selectAll();
QTimer::singleShot(0, this, SLOT(reallySelect()));
No idea why. It just works
Aussi, pour rester dans le domaine, je ne saisie pas complétement la différence entre l'événement focusInEvent et MousePressEvent. Lorsque l'on clic sur la QLineEdit, celle-ci est cliquée et a le focus non ?
Avez-vous une idée ?
Merci beaucoup ! :-)
Partager