मेरे पास Qt
आधारित एप्लिकेशन में एक कंसोल इनपुट है, यह QLineEdit
है, सभी यूआई QtDesigner
के माध्यम से डिज़ाइन किए गए हैं। इनपुट इतिहास को लागू करने के लिए ऊपर और नीचे तीरों को संभालने का यह कोई आसान तरीका है? केवल returnProcessed
संकेत कोई रास्ता नहीं मैं संभाल करने के लिए देख सकते हैं दिखाने के लिए, और तीर :(QLineEdit: तीर ऊपर और नीचे कैसे संभालें?
उत्तर
आप कर सकते हैं install event filter और अपने विंडो वर्ग में अपनी लाइन संपादित घटना को देखने के नीचे एक उदाहरण है:।
class MainWindow : public QMainWindow {
Q_OBJECT
...
protected:
void changeEvent(QEvent *e);
...
};
:
अपने विंडो वर्ग पर घोषित ईवेंट हैंडलर विधि
खिड़की निर्माता
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
...
ui->lineEdit->installEventFilter(this);
}
ईवेंट हैंडलर कार्यान्वयन:
bool MainWindow::eventFilter(QObject* obj, QEvent *event)
{
if (obj == ui->lineEdit)
{
if (event->type() == QEvent::KeyPress)
{
QKeyEvent* keyEvent = static_cast<QKeyEvent*>(event);
if (keyEvent->key() == Qt::Key_Up)
{
qDebug() << "lineEdit -> Qt::Key_Up";
return true;
}
else if(keyEvent->key() == Qt::Key_Down)
{
qDebug() << "lineEdit -> Qt::Key_Down";
return true;
}
}
return false;
}
return QMainWindow::eventFilter(obj, event);
}
आशा है कि यह मदद करता है,
आप QLineEdit उपवर्ग कर सकते हैं और अपने विशेष कुंजियों को संभालने के लिए आभासी keyPressEvent विधि फिर से लागू करते हैं।
void MyLineEdit::keyPressEvent(QKeyEvent *event)
{
if(event->key() == Qt::Key_Up){
// move back in history
}
else if(event->key() == Qt::Key_Down){
// move forward in history
}
else{
// default handler for event
QLineEdit::keyPressEvent(event);
}
}
नीचे 'स्लॉट के लिए जाना'
यह एक अच्छा विचार है। लेकिन QtDesigner- उत्पन्न यूआई के साथ subclassing QLineEdit कैसे गठबंधन करने के लिए? – grigoryvp
देखें: http://doc.trolltech.com/4.6/designer-creating-custom-widgets.html –
तो, विज्ञापन नीचे तीरों को ऊपर उठाने के लिए मुझे एक संपूर्ण QtDesigner प्लगइन को कार्यान्वित करने की आवश्यकता है जो परिभाषित करता है एक "नया" विजेट का उपयोग कैसे करें? :( – grigoryvp
मैं एक ही समस्या थी संबंध है, लेकिन मैं अन्य मंचों कि आप setFocus
की जरूरत में पता लगाना, उदाहरण:
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
...
ui->lineEdit->installEventFilter(this);
this->setFocus();
}
यह मेरे लिए काम करता है।
संदर्भ: http://www.qtforum.org/article/28240/how-to-get-arrow-keys.html
- 1. कीबोर्ड ऊपर और तीर
- 2. ऊपर, नीचे, बाएं और दाएं तीर कुंजियां कुंजीडाउन ईवेंट
- 3. ऊपर-तीर
- 4. सूची तत्व का चयन (नीचे कब्जा/ऊपर तीर)
- 5. कॉलम हेडर में ग्रिडव्यू सॉर्टिंग ऊपर/नीचे तीर
- 6. setDisplayHomeAsUpEnabled() + ऊपर तीर?
- 7. "ऊपर" बटन को कैसे संभालें?
- 8. ऊपर() और नीचे() बनाम Ext.getCmp()
- 9. अप IPython और नीचे तीर अजीब व्यवहार
- 10. पायथन डीबगर (पीडीबी) ने तीर ऊपर/नीचे तीर बंद कर दिया, दिखाता है^[[ए
- 11. जावास्क्रिप्ट में ctrl + तीर को कैसे संभालें?
- 12. उंगली ऊपर/नीचे UITapGestureRecognizer
- 13. शीर्ष नीचे वी नीचे ऊपर डिजाइन दृष्टिकोण
- 14. व्याकरण: ऊपर और नीचे ऊपर के बीच अंतर?
- 15. Azure प्लेटफॉर्म: स्केलिंग उदाहरण ऊपर और नीचे
- 16. पायथन कमांड लाइन दुभाषिया में ऊपर और नीचे तीर आदेश क्यों काम नहीं करते हैं?
- 17. iTerm2 ऊपर और नीचे तीर कुंजियों का उपयोग करके पिछले DIFFERENT कमांड प्राप्त करें
- 18. डिज़ाइन और कोडिंग - ऊपर से नीचे या नीचे तक?
- 19. एचटीएमएल में एक संख्यात्मक ऊपर और नीचे?
- 20. टेलनेट क्लाइंट पर कमांड इतिहास कैसे कार्यान्वित करें? (ऊपर/नीचे तीर)
- 21. मैं लिनक्स खोल में बाएं/दाएं/ऊपर/नीचे तीर इनपुट कैसे स्वीकार करूं?
- 22. एक्सकोड 4 सीएमडी + alt + ऊपर/नीचे रीपैपिंग
- 23. एनआईसी इंटरप्ट (ऊपर/नीचे) को कैसे पकड़ें?
- 24. ऊपर से नीचे subgraphs, subgraphs
- 25. Django वोट ऊपर/नीचे विधि
- 26. लेआउट समस्या: ऊपर और नीचे कुछ कैसे रखें?
- 27. एक div के ऊपर और नीचे पाठ रैप कैसे करें?
- 28. jqGrid - ऊपर/नीचे तीर कुंजियों का उपयोग करके पंक्तियों नेविगेट करें?
- 29. एएसपी.नेट ड्रॉपडाउनलिस्ट चयनित इंडेक्सेड इवेंट ऊपर/नीचे तीर पर गोलीबारी नहीं कर रहा है
- 30. उत्तरोत्तर ऊपर से नीचे करने के लिए नीचे
आगे सरल बनाने का एक तरीका ईवेंट फ़िल्टर को QLineEdit में जोड़ना होगा। फिर आपको obj तर्क, प्लस के बारे में परवाह नहीं करना होगा , आप इसे कई QLineEdits पर लागू कर सकते हैं (यह देखते हुए कि आप ईवेंट पर प्रतिक्रिया करते समय ओबीजे का उपयोग करते हैं) – e8johan
धन्यवाद, एक आकर्षण की तरह काम करता है :) – grigoryvp