2010-05-10 4 views

Répondre

21

Il n'y a pas de signal émis lorsqu'un QLineEdit obtient le focus. La notion de connexion d'une méthode à l'événement focus n'est donc pas directement appropriée.

Si vous voulez avoir un signal focused, vous devrez dériver la classe QLineEdit. Voici un exemple de comment cela peut être réalisé.

Dans le fichier myLineEdit.h vous avez:

class MyLineEdit : public QLineEdit 
{ 
    Q_OBJECT 

public: 
    MyLineEdit(QWidget *parent = 0); 
    ~MyLineEdit(); 

signals: 
    void focussed(bool hasFocus); 

protected: 
    virtual void focusInEvent(QFocusEvent *e); 
    virtual void focusOutEvent(QFocusEvent *e); 
} 

Dans le fichier myLineEdit.cpp vous avez:

MyLineEdit::MyLineEdit(QWidget *parent) 
: QLineEdit(parent) 
{} 

MyLineEdit::~MyLineEdit() 
{} 

void MyLineEdit::focusInEvent(QFocusEvent *e) 
{ 
    QLineEdit::focusInEvent(e); 
    emit(focussed(true)); 
} 

void MyLineEdit::focusOutEvent(QFocusEvent *e) 
{ 
    QLineEdit::focusOutEvent(e); 
    emit(focussed(false)); 
} 

Vous pouvez maintenant connecter le signal MyLineEdit::focussed() à votre méthode focus() (slot).