2010-05-10 9 views
7

मैं विधि फोकस() करने के लिए कुछ QLineEdit तत्व (UI-> lineEdit) से फोकस घटना कनेक्ट करना होगा। मैं यह कैसे कर सकता हूँ?QLineEdit - ध्यान घटना

उत्तर

21

कोई संकेत नहीं है एक QLineEdit फोकस हो जाता है जब उत्सर्जित। इसलिए फोकस इवेंट में किसी विधि को जोड़ने की धारणा सीधे उपयुक्त नहीं है।

यदि आप focused सिग्नल चाहते हैं, तो आपको QLineEdit क्लास प्राप्त करना होगा। यहां एक नमूना है कि यह कैसे प्राप्त किया जा सकता है।

myLineEdit.h फ़ाइल में आप हैं:

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

myLineEdit.cpp फ़ाइल में आप हैं:

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

अब आप अपने focus() विधि (स्लॉट) को MyLineEdit::focussed() संकेत कनेक्ट कर सकते हैं।

1

मुझे लगता है आप संकेत/स्लॉट में के रूप में कनेक्ट मतलब है, फोकस घटना एक संकेत यह एक आभासी विधि आप क्रम में ओवरराइड करने के लिए व्यवहार में परिवर्तन करना है नहीं है:

http://doc.qt.io/qt-5/qlineedit.html#focusInEvent

संबंधित मुद्दे