2010-05-10 8 views

답변

21

는 아무런 신호가 없다 QLineEdit가 포커스를 얻을 때 생성됩니다. 따라서 메서드를 포커스 이벤트에 연결하는 개념은 직접적으로 적절하지 않습니다.

신호가 인 경우 QLineEdit 클래스를 파생시켜야합니다. 이것이 어떻게 달성 될 수 있는지에 대한 견본입니다. myLineEdit.h 파일에서

, 당신은 다음 myLineEdit.cpp 파일에서

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

당신은 : 이제 focus() 방법 (슬롯)에 MyLineEdit::focussed() 신호를 연결할 수 있습니다

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

.

관련 문제