2010-05-10 38 views

Respuesta

21

no hay señal emitido cuando un QLineEdit obtiene el foco. Entonces la noción de conectar un método al evento de enfoque no es directamente apropiada.

Si desea tener una señal focused, deberá derivar la clase QLineEdit. Aquí hay una muestra de cómo se puede lograr esto.

En el archivo myLineEdit.h tiene:

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); 
} 

En el archivo myLineEdit.cpp tiene:

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)); 
} 

Ahora puede conectar la señal MyLineEdit::focussed() a su focus() método (ranura).

Cuestiones relacionadas