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);
};
#endif
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);
    }
}
Le 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.

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.