QLineEdit : problème de sélection
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é :
Code:
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;
} |
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é.
J'ai effectué quelques recherches et j'ai trouvé ceci :
Citation:
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
Si c'est la bonne solution, je ne comprends pas non plus pourquoi ^^.
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 ! :-)