2011-06-23 8 views
14

क्यूटी में QLineEdit का क्लिक इवेंट कैसे प्राप्त करें?क्यूटी में QLineEdit के क्लिक इवेंट कैसे प्राप्त करें?

मैं QLineEdit पर क्लिक करने के लिए संबंधित किसी भी एसएलओटी को देखने में सक्षम नहीं हूं?

+0

किसी भी व्यावहारिक कारण से आप QLineEdit पर क्लिक ईवेंट के लिए पूछ रहे हैं? – emaillenin

+0

@emaillenin: हां, मैं टेक्स्टबॉक्स के क्लिक पर एक और कस्टम नियंत्रण लाने के लिए चाहता हूं ... – user662285

उत्तर

7

आपको Q12ineEdit को विस्तारित करने वाली एक नई कक्षा में फोकसइवेन्ट को फिर से लागू करने की आवश्यकता है। निम्नलिखित लिंक आपकी मदद करने जा रहे हैं।

  1. http://doc.qt.io/qt-5/qwidget.html#focusInEvent
  2. QLineEdit - focus event
  3. How to know if a QLineEdit got focus?
  4. QLineEdit Focus Event
1

कोई संकेत QLineEdit के लिए क्लिक किया की तरह() है, लेकिन आप इसे उपवर्ग और के अपने कस्टम कार्यान्वयन में इस तरह के संकेत फेंकना कर सकते हैं mouseReleaseEvent।

2

मुझे यह मदद मिलेगी, टेक्स्ट दर्ज होने के बाद मुझे एक फ़ंक्शन कॉल करना पड़ा। मैंने इस तरह से इसे किया।

connect(ui->passwordSetLineEdit,SIGNAL(textEdited(QString)),this,SLOT(onTextEdit(QString))); 

जब एक पाठ textEdited संकेत दर्ज किया गया है उत्सर्जित हो जाएगा, इस प्रकार मेरी onTextEdit समारोह बुलाया जाएगा।

17

मुझे नहीं लगता कि एक QLineEdit subclassing सही विकल्प है। यदि आपको आवश्यकता नहीं है तो सबक्लास क्यों? आप इसके बजाय ईवेंट फ़िल्टर का उपयोग कर सकते हैं। QObject::eventFilter देखें।

उदाहरण:

MyClass::MyClass() : 
    edit(new QLineEdit(this)) 
{ 
    edit->installEventFilter(this); 
} 

bool MyClass::eventFilter(QObject* object, QEvent* event) 
{ 
    if(object == edit && event->type() == QEvent::MouseClick) { 
     // bring up your custom edit 
     return false; // lets the event continue to the edit 
    } 
    return false; 
} 
+1

'QEvent :: FocusIn' जैसा दिखता है यहां अधिक उचित प्रकार है। – gluk47

+0

कोई 'QEvent :: MouseClick' ईवेंट नहीं है। इसके बजाय 'QEvent :: MouseButtonPres' का उपयोग करें – semanser

4

हालांकि कोई "क्लिक" या "प्रविष्ट" घटना नहीं है। आप

void cursorPositionChanged(int old, int new) 

Signal का उपयोग कर सकते हैं। यह तब उत्सर्जित होता है जब उपयोगकर्ता लाइनेडिट (यदि यह सक्षम है) पर क्लिक करता है और कुछ अन्य अवसरों पर भी आपको यह सत्यापित करना होगा कि वास्तव में कौन सी घटनाएं हुईं लेकिन मुझे लगता है कि यह कुछ अनुप्रयोगों के लिए ईवेंट क्लासर को उपclassing या उपयोग करना अभी भी आसान है ।

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