Bonjour,
j'ai créé une classe cTextEdit pour promouvoir un QtextEdit.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 #ifndef _CTEXTEDIT_H_ #define _CTEXTEDIT_H_ #include <QTextEdit> #include <QKeyEvent> class cTextEdit : public QTextEdit { Q_OBJECT public: cTextEdit(QWidget *parent); protected: virtual void keyPressEvent(QKeyEvent *event); }; #endifLe but de ce code est d'obtenir des touches [ENTER] et [RETURN] le même comportement que la touche [TAB] d'un QTextEdit quand sa propriété TabChangesFocus est vraie, c'est-à-dire de passer le focus au champ suivant. Le code ci-dessus est fonctionnel.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 #include "ctextedit.h" [...] cTextEdit::cTextEdit(QWidget *parent) : QTextEdit(parent) { setTabChangesFocus(true); } [...] void cLineEdit::keyPressEvent(QKeyEvent *event){ switch (event->key()) { case Qt::Key_Return: case Qt::Key_Enter: case Qt::Key_Tab: //Obligatoire si un seul TabOrder dans la fenêtre malgré le setTabChangesFocus(true) { focusNextChild(); break; } default: QTextEdit::keyPressEvent(event); } }
Mais cela n'a pas été ma première approche : j'ai d’abord essayé vainement de "transférer" (d'associer) le comportement de keyPressEvent(event) "Tab" aux 2 autres... et je me demande encore comment on fait. Donc par exemple, comment associerait-on le comportement de la touche [backspace] à [F10] ou [Enter] (toujours dans un QTextEdit) ? Là, pas moyen de contourner le problème avec un focusNextChild();
Merci. Cordialement AD.
Partager