एक संवाद में, जब टैब कुंजी दबाया जाता है, तो फ़ोकस किसी अन्य विजेट में बदल जाता है। क्यूटी में, क्या कोई संकेत है जब विजेट अपना ध्यान खो देता है? क्या मैं इसका उपयोग यह जांचने के लिए कर सकता हूं कि इनपुट मान्य है या नहीं? यदि नहीं, तो क्या मैं फोकस वापस सेट कर सकता हूं और उपयोगकर्ता को फिर से इनपुट करने के लिए कह सकता हूं?जब कोई विजेट फोकस खो देता है तो सिग्नल क्या होता है?
उत्तर
कोई संकेत नहीं है लेकिन यदि आप जानना चाहते हैं कि आपके विजेट ने फोकस खो दिया है, तो अपने विजेट में void QWidget::focusOutEvent(QFocusEvent* event)
को ओवरराइड और पुन: कार्यान्वित करें। जब भी आपका विजेट फोकस खो देता है तब इसे कॉल किया जाएगा। विजेट पर ध्यान देने के लिए, QWidget::setFocus(Qt::FocusReason)
का उपयोग करें।
एक QLineEdit
में इनपुट प्रमाणित करने के लिए या QComboBox
आप QValidator
उपवर्ग और अपने खुद के सत्यापनकर्ता को लागू, या मौजूदा उपवर्गों में से एक, QIntValidator
, QDoubleValidator
, या QRegExpValidator
उपयोग कर सकते हैं। QLineEdit::setValidator(const QValidator*)
और QComboBox::setValidator(const QValidator*)
के साथ क्रमशः सत्यापनकर्ता सेट करें।
int MyDialog::exec() {
while (true) {
if (QDialog::exec() == QDialog::Rejected) {
return QDialog::Rejected;
}
if (validate()) {
return QDialog::Accepted;
}
}
}
bool MyDialog::validate() {
if (lineEdit->text().isEmpty()) {
QMessageBox::critical(this, "Invalid value", "The specified value is not valid");
lineEdit->setFocus();
lineEdit->selectAll();
return false;
}
return true;
}
यह उपयोगकर्ता ठीक से संवाद को बंद करने की अनुमति नहीं देंगे:
आप एक मॉडल संवाद बॉक्स की सामग्री को मान्य करना चाहते हैं, एक तरह से इस तरह एक कार्यान्वयन के साथ QDialog::exec()
ओवरराइड करने के लिए किया जाएगा बटन या स्वीकार किए गए भूमिका के साथ कोई अन्य बटन जब तक कि संवाद की सामग्री सफलतापूर्वक सत्यापित न हो जाए। इस उदाहरण में मुझे लगता है कि संवाद में QLineEdit
नाम lineEdit
है और validate
फ़ंक्शन यह सुनिश्चित करेगा कि इसकी सामग्री खाली नहीं है। यदि ऐसा है, तो यह QLineEdit
पर फ़ोकस सेट करेगा और फिर संवाद दिखाएगा।
वास्तव में एक संकेत है - ['QAplication :: focusChanged'] (http://qt-project.org/doc/qt-5.0/qtwidgets/qapplication.html#focusChanged)। – sashoalm
[sashoalm] (https://stackoverflow.com/users/492336/sashoalm) की pithy टिप्पणी स्वीकार किए गए उत्तर होना चाहिए। बेशक, यह इस तरह काम नहीं करता है। [इस तरह के उत्तर] (https://stackoverflow.com/a/321677/2809027) पर [इस डुप्लिकेट प्रश्न] पर विचार करें (https://stackoverflow.com/questions/321656/get-a-notification-event- सिग्नल -वें-ए-क्यूटी-विजेट-होट-फ़ोकस) इसके बजाए। '' –
यह भी संभव है (और आसान) है संकेत खुद
सीपीपी में बनाने के लिए (मत भूलना MOC शामिल करने के लिए)
class FocusWatcher : public QObject
{
Q_OBJECT
public:
explicit FocusWatcher(QObject* parent = nullptr) : QObject(parent)
{
if (parent)
parent->installEventFilter(this);
}
virtual bool eventFilter(QObject *obj, QEvent *event) override
{
Q_UNUSED(obj)
if (event->type() == QEvent::FocusIn)
emit focusChanged(true);
else if (event->type() == QEvent::FocusOut)
emit focusChanged(false);
return false;
}
Q_SIGNALS:
void focusChanged(bool in);
};
और यह कनेक्ट करने के लिए:
connect(new FocusWatcher(myWidget), &FocusWatcher::focusChanged, this, &View::doSomething);
- 1. जब कोई तत्व फोकस खो देता है तो जावास्क्रिप्ट चलाएं
- 2. pyqt: जब विजेट दिखाई देता है/छुपा रहता है तो संकेत प्राप्त होता है
- 3. जब कोई सेल फ़ोकस खो देता है तो कोई Jtable डेटा सहेज सकता है?
- 4. जब कोई एप्लिकेशन फोकस खो देता है तो कैसे पता लगाया जाए?
- 5. मुझे कैसे पता चलेगा जब NSTextView फोकस खो देता है?
- 6. जब कोई प्रकार स्वयं होता है तो क्या करना है?
- 7. जब जावा प्रोग्राम शुरू होता है तो क्या होता है?
- 8. जब सिग्नल में जीयूआई थ्रेड निष्क्रिय होता है तो सिग्नल उत्सर्जित करता है?
- 9. जब आप कोई प्रोग्राम चलाते हैं तो क्या होता है?
- 10. जब मैं फोकस खो देता हूं तो मैं विम ऑटोसेव फाइल कैसे बना सकता हूं?
- 11. एमिट सिग्नल यदि सभी बच्चों के विजेट फोकस
- 12. कोणीय 2 डायनामिक इनपुट फ़ील्ड फोकस खो देता है जब इनपुट बदलता है
- 13. एंड्रॉइड - विजेट को अक्सर अद्यतन कैसे करता है, लेकिन जब यह दिखाई देता है तो केवल तभी होता है?
- 14. जब एक टुकड़ा फोकस खो देता है और फिर फोकस प्राप्त करता है, तो इस अवधि में इसकी ऑनस्यूम() विधि को क्यों नहीं कहा जाता है?
- 15. जब कोई फ़ंक्शन समाप्त होता है तो इसका क्या अर्थ होता है}) (jQuery) ;?
- 16. RODBC डेटाटाइम के समय मान खो देता है जब परिणाम सेट बड़ा होता है
- 17. एडिटटेक्स्ट फोकस नहीं खो रहा है
- 18. क्यों ट्विटर बूटस्ट्रैप इनपुट: फोकस: अमान्य: जब novalidate का उपयोग किया जाता है तो फोकस ट्रिगर होता है?
- 19. डेटाग्रिड चयन खो देता है
- 20. अवलोकन योग्य चयन बाध्यकारी खो देता है जब मैं "नया"
- 21. जब वे फोकस खो देते हैं तो जासूस ++ और विंडोज़ बंद हो जाते हैं
- 22. UITextField खो गया फोकस
- 23. क्या होता है जब डॉकर होस्ट पुनरारंभ होता है?
- 24. बचें तत्व कलंक हैंडलर जब लागू खिड़की कलंक (ब्राउज़र ध्यान केंद्रित खो देता है)
- 25. प्रतिक्रियात्मक मूल: जब इसके ऊपर अलर्ट दिखाई देता है तो मॉडल छिपा नहीं होता है
- 26. जब document.readystate == पूरा होता है तो वही होता है जब अधिभार आग लगती है?
- 27. IE8 iframe DesignMode चयन खो देता है
- 28. जब एक टेक्स्टबॉक्स फोकस
- 29. चयन रंग बदल जाता है जब Firefox ध्यान केंद्रित खो देता है
- 30. जब कोई एक अनचाहे फ़ाइल जोड़ता है, तो क्या यह तुरंत चरणबद्ध नहीं होता है?
यदि आप 'QLineEdit' फोकस खोने में रूचि रखते हैं, तो' QLineEdit :: editFinished() 'सिग्नल उस ईवेंट को कैप्चर करता है। – waldyrious